publicclassDemo5{publicstaticvoidmain(String[] args){ArrayList<String> list =newArrayList<>();list.add("JavaEE企業級開發指南");list.add("Oracle高級編程");list.add("MySQL從入門到精通");list.add("Java基礎教程");//打印書名中包含“Java”的元素for(int i =0; i < list.size(); i++){if(list.get(i).contains("Java")){System.out.println(list.get(i));}}System.out.println("---------------------");//刪除書名字符小于10個的元素,并打印刪除元素for(int i =0; i < list.size(); i++){if(list.get(i).length()<10){String s = list.remove(i);System.out.println(s);}}System.out.println("---------------------");//刪除書名字符小于10個的元素,并打印刪除后集合list.removeIf(s ->{return s.length()<10;});for(String s : list){System.out.println(s);}}}打印結果:
------------------------------------------------------
JavaEE企業級開發指南
Java基礎教程
---------------------
Java基礎教程
---------------------
JavaEE企業級開發指南
Oracle高級編程
MySQL從入門到精通
2.元素刪除 刪除元素“bbb"【兩種方式用其一】
publicclassDemo2{publicstaticvoidmain(String[] args){ArrayList<String> list =newArrayList<>();list.add("aaa");list.add("bbb");list.add("bbb");list.add("ccc");list.add("ddd");//方法一:迭代器刪除Iterator<String> it = list.iterator();while(it.hasNext()){String s = it.next();if("bbb".equals(s)){it.remove();//迭代器遍歷元素時,集合不能參入其中//所以不能用集合的刪除方法,否則出現并發修改異常}}System.out.println(list);---------------------------------------------------------------//方法二:集合刪除for(int i =0; i < list.size(); i++){if("bbb".equals(list.get(i))){list.remove(list.get(i));i--;//由于刪除后,集合后面的元素索引會+1,避免刪除元素連續錯過}}System.out.println(list);}}
3.自定義集合【用于面試】 實現增刪改查功能,實現迭代器超級接口
publicclassTest3{publicstaticvoidmain(String[] args){MyList<String> myList =newMyList<>();myList.add("hello");myList.add("world");myList.add("java");Iterator it = myList.iterator();while(it.hasNext()){Object o = it.next();System.out.println(o);}}}//實現此接口允許對象成為“for-each loop”語句的目標classMyList<T>implementsIterable{//數組用于存儲元素private Object[] array ={};//集合的長度privateint size =0;//初始化長度,默認為10個元素publicMyList(){array =newObject[10];}//添加元素publicvoidadd(T t){//1.先記錄添加元素的位置int index = size;//2.判斷這個位置的是否可以添加元素if(index >= array.length){//如果不能添加了,則將數組長度變成1.5倍,右移的優先級比加減法更低Object[] newArray =newObject[array.length +(array.length >>1)];//再將原數組的元素復制到新數組中System.arraycopy(array,0, newArray,0, size);//把新數組的地址值重新賦值給原數組array = newArray;}//沒滿,則添加元素array[index]= t;size++;}//修改元素publicvoidset(int index, T t){//先判斷索引是否越界,如果是,就拋出異常if(index >= size){thrownewIndexOutOfBoundsException(index +"索引越界了");}//否則返回數組中的index位置的元素array[index]= t;}//獲取元素public Object get(int index){//先判斷索引是否越界,如果是,就拋出異常if(index >= size){thrownewIndexOutOfBoundsException(index +"索引越界了");}//否則返回該元素return array[index];}//刪除元素publicvoiddelete(int index){//先判斷索引是否越界,如果是,就拋出異常if(index >= size){thrownewIndexOutOfBoundsException(index +"索引越界了");}//否則刪除該元素array[index]= null;/*for (int i = index; i < array.length - 1; i++) {array[i] = array[i + 1];}//最后一個元素需要置空array[array.length-1]=null;*/for(int i = index; i < size; i++){array[i]= array[i +1];}size--;}//獲取長度publicintsize(){return size;}//遍歷方法publicvoidprintMyList(){for(Object o : array){if(o != null){System.out.println(o);}}}//迭代器public Iterator iterator(){returnnewTtr();}//自定義迭代器類classTtr<T>implementsIterator<T>{//從0索引開始,往后面一個一個的獲取元素int index =0;@OverridepublicbooleanhasNext(){return array[index]!= null;}@Overridepublic T next(){//獲取當前元素T e =(T) array[index];index++;return e;}}}打印結果:
-----------------------------------------------------------
hello
world
java