集合難題
封裝動態陣列
解題思路;和陣列一樣;難點是插入刪除的前後整體移動
- 設計一個Student類,該類中包括學生的姓名和成績。建立Student類的5個物件,如下所示:
第三題我用迭代器做出來了
執行測試類
package 程式設計題1;
import java.util.ArrayList;
import java.util.Iterator;
public class ArrayListUse {
public static void main(String[] args) {
ArrayList list =new ArrayList();
Student p1=new Student("劉德華",85);
Student p2=new Student("張學友",100);
Student p3=new Student("劉傑",65);
Student p4=new Student("章子怡",58);
Student p5=new Student("周迅",76);
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);
list.add(p5);
Iterator ss=list.iterator();
int k=list.size();
System.out.println(k);
while(ss.hasNext()) {//用迭代器遍歷 要避免 ConcurrentModificationException 就是在使用迭代器之前,先不要刪除元素 屬於執行緒問題
Student student=(Student)ss.next();
Integer score=student.getScore();
if(score<60) {
System.out.println(student.getName());
}
}
Student student=(Student)ss.next();
Integer score=student.getScore();
if(score<60) {
System.out.println("不及格的是:"+student.getName());
}
}
//用迭代器輸出刪除 劉傑後並列印 利用迭代器只能輸出一次的特帶你
/*while(ss.hasNext()) {
Student student=(Student)ss.next();
String name=student.getName();
if(name.equals("劉傑")) {
continue;
}else {
System.out.println(student);
}
}*/
for(int i=0;i<list.size();i++) {
Student student=(Student)list.get(i);
String name=student.getName();
if(name.equals("劉傑")) {
list.remove(i);
}else {
System.out.println(student);
}
}
for(int i=0;i<list.size();i++) {
Student student=(Student)list.get(i);
String name=student.getName();
if(name.equals("劉德華")) {
student.setScore(95);
System.out.println(student);
}else {
System.out.println(student);
}
}
}
}
定義類
package 程式設計題1;
public class Student {
private String name;
private Integer score;
public Student() {
// TODO Auto-generated constructor stub
}
public Student(String name,Integer score) {
this.name=name;
this.score=score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getScore() {
return score;
}
public void setScore(Integer score) {
this.score = score;
}
@Override
public String toString() {
return "Student [name=" + name + ", score=" + score + "]";
}
}
2.建立一個ArrayList物件,用來儲存1到10之間的數,打亂順序後輸出,按從小到大輸出,按從大到小輸出。
package 程式設計題2;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
public class SuiJi {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList list =new ArrayList();
for(int i=1;i<=10;i++) {
list.add(i);
}
//建立一個新的集合
ArrayList newList =new ArrayList();
//迴圈10次,並且將隨機出現的數當作下標新增到新集合
for(int i=1;i<=10;i++) {
Random ss=new Random();
int s=ss.nextInt(list.size())+1;//將隨機出現的數當作list集合的下標
newList.add(list.get(s-1)); //將老集合出現的隨機下標 所在的值新增到新集合
list.remove(s-1);//老集合中隨機到的下標所i在的數直接刪除 此時 list集合的長度也會減一;下次迴圈 ,就是0到9的隨機數‘ 這樣輸出的新集合是隨機的
}
for(int i=0;i<newList.size();i++) {
int kkk=(int)newList.get(i);
System.out.println(kkk);
}
System.out.println("--------------------------------------------------");
//從小往大輸出
int sss[]=new int[newList.size()];
int index=0;
for(int i=0;i<newList.size();i++) {
sss[index++]=(int)newList.get(i);
}
Arrays.sort(sss);
for(int s_ :sss) {
System.out.print(s_+" ");
}
System.out.println();
//從大往小輸出
for(int i=(sss.length-1);i>=0;i--) {
System.out.print(sss[i]+" ");
}
}
}
//結果
/*
7
9
2
1
8
3
4
10
5
6
--------------------------------------------------
1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1
*/
- 已知有十六支男子足球隊參加2008 北京奧運會。寫一個程式,把這16 支球隊隨機分為4 個組。
package 程式設計題3;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class FootBallTeam {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList list=new ArrayList();
list.add("象牙海岸");
list.add("阿根延");
list.add("澳大利亞");
list.add("塞爾維亞");
list.add("荷蘭");
list.add("奈及利亞");
list.add("日本");
list.add("美國");
list.add("中國");
list.add("紐西蘭");
list.add("巴西");
list.add("比利時");
list.add("韓國");
list.add("喀麥隆");
list.add("宏都拉斯");
list.add("義大利");
ArrayList list1=new ArrayList();
ArrayList list2=new ArrayList();
ArrayList list3=new ArrayList();
ArrayList list4=new ArrayList();
for(int i=0;i<16;i++) {
Random ss=new Random();
int num=ss.nextInt(list.size())+1;
if(i<4) {
list1.add(list.get(num-1));
list.remove(num-1);
}else if(i<8) {
list2.add(list.get(num-1));
list.remove(num-1);
}else if(i<12) {
list3.add(list.get(num-1));
list.remove(num-1);
}else {
list4.add(list.get(num-1));
list.remove(num-1);
}
}
for(int i=0;i<list1.size();i++) {
String str=(String)list1.get(i);
System.out.print(str+" ");
}
System.out.println();
for(int i=0;i<list2.size();i++) {
String str=(String)list2.get(i);
System.out.print(str+" ");
}
System.out.println();
for(int i=0;i<list3.size();i++) {
String str=(String)list3.get(i);
System.out.print(str+" ");
}
System.out.println();
for(int i=0;i<list4.size();i++) {
String str=(String)list4.get(i);
System.out.print(str+" ");
}
System.out.println();
}
}
4.Object類動態陣列
抽象介面
package 程式設計題9;
public interface DynamicArrayable {
void add(Object obj);
void add(int index,Object obj);
void remove(int index);
Object get(int index);
void set(int index,Object obj);
boolean contain(Object obj);
}
自定義類
package 程式設計題9;
public class DynamicArray implements DynamicArrayable {
int arraySize;
Object [] array;
int size;
public DynamicArray() {
arraySize=10;
}
public DynamicArray(int arraySize) {
this.arraySize=arraySize;
}
@Override
public void add(Object obj) {
// TODO Auto-generated method stub
if(size==0) {
array=new Object[arraySize];
}
if(size>=array.length) {
Object newArray []=new Object [array.length+10];
for(int i=0;i<array.length;i++) {
newArray[i]=array[i];
}
array=newArray;
}
array[size]=obj;
size++;
}
@Override
public void add(int index, Object obj) {
// TODO Auto-generated method stub
if(size==0) {
array=new Object[arraySize];
}
if(size>=array.length) {
Object newArray []=new Object[array.length+10];
for(int i=0;i<array.length;i++) {
newArray[i]=array[i];
}
array=newArray;
}
for(int i=size-1;i>=index;i--) {
array[i+1]=array[i];
}
array[index]=obj;
size++;
}
@Override
public void remove(int index) {
// TODO Auto-generated method stub
for(int i=index;i<size;i++) {
array[i]=array[i+1];
}
array[size-1]=null;
size--;
}
@Override
public Object get(int index) {
// TODO Auto-generated method stub
return array[index];
}
@Override
public void set(int index, Object obj) {
// TODO Auto-generated method stub
array[index]=obj;
}
@Override
public boolean contain(Object obj) {
// TODO Auto-generated method stub
for(int i=0;i<array.length;i++) {
if(obj.equals(array[i])) {
return true;
}
}
return false;
}
public int getSize() {
return size;
}
}
測試類
package 程式設計題9;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
DynamicArray a=new DynamicArray();
a.add("唐僧");
a.add("孫悟空");
a.add("豬八戒");
a.add("沙和尚");
a.add("六耳獼猴");
boolean s=a.contain("孫悟空");
System.out.println(s);
int b=a.getSize();
System.out.println(b);
a.set(4, "如來");
String Hero=(String)a.get(4);//因為寫的陣列是父型別
System.out.println(Hero);
}
}
相關文章
- 題解集合
- 難題
- 集合效能問題
- 洛谷題單指南-集合-P1621 集合
- 集合劃分 題解
- 集合習題 | 高階
- 卡圖難題
- 集合相關面試題面試題
- 集合 bcadd 的精度問題?
- Java Collection集合面試題Java面試題
- Android 面試題集合(2018)Android面試題
- 「數論難題解答」
- 集合常見的面試題面試題
- Java集合高頻面試題Java面試題
- JVM集合之開篇點題JVM
- 一些困難題
- 面試疑難問題面試
- Java Stream難題 - Heinz KabutzJava
- 《10000個科學難題》
- 指標-小泉的難題指標
- 44道JavaScript難題(JavaScriptPuzzlers!)JavaScript
- Java面試題-集合框架篇三Java面試題框架
- Nowcoder Girl 2017題目集合詳解
- 燒腦:7條認知難題難倒了AI大模型AI大模型
- MyBatis面試題集合,90%會遇到這些問題MyBatis面試題
- [BJOI2017] 樹的難題
- ctfshow_web_1(困難題)Web
- 軟體工程的最大難題軟體工程
- NP難問題求解綜述
- 44 道 JavaScript 難題(JavaScript Puzzlers!)JavaScript
- 資料庫系統原理-問題集合資料庫
- 難對齊、難保障、難管理?一文了解位元組跳動如何解決資料SLA治理難題
- 最難的 JavaScript 面試題解析JavaScript面試題
- 破解Oracle應用整合難題RWOracle
- 解決超級模型部署難題模型
- 掌握 analyze API,搞定分詞難題API分詞
- 併發程式設計28題+JVM21題+Redis 16題+Java集合22題程式設計JVMRedisJava
- 鄭州的小夥伴集合:現在鄭州的大環境有多難?