關(guān)于集合的一些學習時候的代碼:
1.集合的共性方法————Collection
2.Collection的迭代器
3.List的特有方法
4.List的特有迭代器
1.集合的共性方法————Collection
privatestaticvoid demo01(){
? ? ? ? /*? ? ? ? *? ? 創(chuàng)建一個集合對象
? ? ? ? ? ? 集合只能保存對象類型,基本數(shù)據(jù)類型無法使用集合保存,如果需要保存基本數(shù)據(jù)類型
? ? ? ? ? ? 必須使用其包裝類型存儲 ->也就是用Integer而非int
? ? ? ? */? ? ? ? Collection coll =newArrayList<>();
? ? ? ? /*? ? ? ? * 添加
? ? ? ? */? ? ? ? coll.add(45);//會先將45轉(zhuǎn)換為integer類型黎烈,然后再存入集合中coll.add(35);
? ? ? ? Collection coll2 =newArrayList<>();
? ? ? ? coll2.add(77);
? ? ? ? coll2.add(88);
? ? ? ? coll2.add(45);
? ? ? ? coll2.addAll(coll);//addAll是將同一個類型和集合整個加在后面假瞬,不會對重復的元素刪除? ? ? ? System.out.println(coll2);
? ? ? ? //集合可以直接打印輸出System.out.println(coll);//[45, 35]/*? ? ? ? * 移除
? ? ? ? *///coll.clear();移除所有元素
? ? ? ? //coll.remove(45);//remove的是object哥捕,這里寫入45诚纸,會先將45裝箱成integer類型窜觉,對比移除
? ? ? ? //? ? ->只會從前往后移除第一個元素谷炸,后面同名的不會移除
? ? ? ? //coll2.removeAll(coll);//會將coll中所有元素刪除,同時禀挫,如果有coll2本身與coll相同的元素旬陡,也會一起刪除/*? ? ? ? * 獲取
? ? ? ? *///獲取集合長度的方法? ? ? ? System.out.println(coll.size());
? ? ? ? /*? ? ? ? * 判斷
? ? ? ? */? ? ? ? System.out.println(coll.isEmpty());//判斷是否為空System.out.println(coll.contains(45));//判斷是否有45這個元素,返回bool值System.out.println(coll2.containsAll(coll));//coll2是否包含coll的所有元素/*? ? ? ? *? ? 求交集(兩個集合中都有的元素)
? ? ? ? * (謹慎语婴!會改變調(diào)用函數(shù)的集合數(shù)據(jù)描孟,用來存相同的數(shù)據(jù))
? ? ? ? */? ? ? ? System.out.println(coll2.retainAll(coll));//coll2保留所有和coll相同的元素
? ? ? ? //? ? ->如果沒有相同值,則會將coll2置為空集System.out.println(coll2);//[45, 45, 35]/*? ? ? ? * 集合與數(shù)組的轉(zhuǎn)換
? ? ? ? */? ? ? ? Object[] arr = coll2.toArray();//如果轉(zhuǎn)成object類型砰左,無法使用一些方法(除非進行強轉(zhuǎn))? ?
? ? ? ? //也就是說? ? arr.toString是沒有的匿醒,但是arr2.toString是有的
? ? ? ? //指定類型轉(zhuǎn)換為數(shù)組
? ? ? ? //傳遞的參數(shù)數(shù)組對象,如果長度小于集合元素個數(shù)缠导,會默認按照元素個數(shù)來創(chuàng)建結(jié)果數(shù)組
? ? ? ? //如果給的參數(shù)數(shù)組的長度大于集合元素個數(shù)廉羔,沒有對應元素的數(shù)組空間會使用null來填充Integer[] arr2 = coll2.toArray(newInteger[1]);
? ? ? ? for(inti = 0; i < arr2.length; i++) {
? ? ? ? ? ? System.out.println(arr2[i]);
? ? ? ? }
? ? }
2.Collection的迭代器
privatestaticvoid demo02(){
? ? ? ? Collection coll =newArrayList<>();
? ? ? ? coll.add("d1");
? ? ? ? coll.add("d2");
? ? ? ? coll.add("d3");
? ? ? ? coll.add("d4");
? ? ? ? System.out.println(coll);///*? ? ? ? * 獲取每一個元素對象,需要使用專門的迭代器對象
? ? ? ? */? ? ? ? Iterator it = coll.iterator();//新建coll的迭代器對象//? ? ? ? System.out.println(it.next());一個next會輸出下一個值僻造,并不會一直輸出一個值? ? ? ? System.out.println(it.next());
? ? ? ? System.out.println(it.next());
? ? ? ? //通過迭代器對象的方法hasnext來判斷是否還有未獲取的元素while(it.hasNext()){
? ? ? ? ? ? //通過迭代器的next方法來獲取對應元素對象
? ? ? ? ? ? //String name = it.next();? ? ? ? ? ?
? ? ? ? ? ? System.out.println("這里是循環(huán)里");
? ? ? ? ? ? System.out.println(it.next());
? ? ? ? }
? ? ? ? //迭代元素的優(yōu)化憋他,官方的建議寫法/*? ? ? ? for (Iterator it2 = coll.iterator(); it2.hasNext();) {
? ? ? ? ? ? String string = (String) it2.next();
? ? ? ? ? ? System.out.println(string);? ? ? ? ? ? ? ? 優(yōu)點是it2用完就回收
? ? ? ? }*//*? ? ? ? * java為集合專門設(shè)計了一個遍歷的循環(huán)語句 增強for循環(huán)(foreach)
? ? ? ? */for (String string : coll) {
? ? ? ? }
? ? }
3.List的特有方法
privatestaticvoid demo03(){
? ? ? ? List list =newArrayList<>();
? ? ? ? /*? ? ? ? * 添加
? ? ? ? */? ? ? ? list.add("這是0");
? ? ? ? list.add("這會是1嗎");
? ? ? ? list.add(1, "它想插到位置1");//首先要有0號元素孩饼,之后便可以自由輸入位置插入,不然就會按照順序插入? ? ? ? System.out.println(list);
? ? ? ? //list.addAll(index, c);將另一個集合放入指定位置中/*? ? ? ? * 移除
? ? ? ? *///list.remove(1);//有返回值竹挡,返回的是被刪除的那個值
? ? ? ? //System.out.println(list);//System.out.println(list.remove(1));會打印出被移除的1號元素/*? ? ? ? * 獲取
? ? ? ? */? ? ? ? System.out.println(list.get(0));//獲取捣辆,但是不會移除System.out.println(list.indexOf("這會是1嗎"));//根據(jù)內(nèi)容找到下標,沒有就返回-1/*? ? ? ? * 修改
? ? ? ? */? ? ? ? list.set(0, "我把0號改了");//不是修改的對象此迅,是修改的指針? ? ? ? System.out.println(list);
? ? ? ? /*? ? ? ? * 獲取子集合
? ? ? ? */? ? ? ? System.out.println(list.subList(1,2));//從1開始獲取,在2之前結(jié)束->也就是不包含2? ? ? ? ? ?
? ? }
4.List的特有迭代器
privatestaticvoid demo04(){
? ? ? ? List list =newArrayList<>();
? ? ? ? list.add("這是0");
? ? ? ? list.add("這會是1嗎");
? ? ? ? list.add(1, "它想插到位置1");
? ? ? ? /*? ? ? ? * 默認迭代器
? ? ? ? *///? ? ? ? for (Iterator iterator = list.iterator(); iterator.hasNext();) {//? ? ? ? ? ? String string = (String) iterator.next();//? ? ? ? ? ? System.out.println(string);//? ? ? ? }/*? ? ? ? * 使用特有的列表迭代器
? ? ? ? */for(ListIterator it = list.listIterator();it.hasNext();){
? ? ? ? ? ? String str = it.next();
? ? ? ? ? ? System.out.println(str);
? ? ? ? ? ? if(str.equals("這是0")){
? ? ? ? ? ? ? ? //it.set("HAHA");
? ? ? ? ? ? ? ? //it.remove();it.add("HAHA");//[這是0, HAHA, 它想插到位置1, 這會是1嗎]? ? ? ? ? ? }
? ? ? ? }
? ? ? ? System.out.println(list);
? ? ? ? //反序迭代
? ? ? ? //迭代器對象獲取的默認方式是設(shè)置的從下標為0的位置開始for(ListIterator it = list.listIterator(list.size()); it.hasPrevious();) {
? ? ? ? ? ? String str = it.previous();//不需要list.size()-1是因為hasprevious是找前一位是否有元素? ? ? ? ? ? System.out.println(str);
? ? ? ? }
? ? }