集合操作

<small>

集合的概念

集合:裝有不同類型的數(shù)據(jù)集合
數(shù)組:同一類型的數(shù)據(jù)集合
People[] peo=new People[10];
Dog[] dogs=new Dog[10];
要使得兩者混裝 可以父類 Object
Object[] objs=new Object[20];
但是這種方法有弊端
無法快速得到所要的元素
而且每次使用元素是,都必須將元素強(qiáng)轉(zhuǎn)成對應(yīng)的類型

Collection

Collection 表示一組對象,這些對象也稱為 collection 的元素。一些 collection 允許有重復(fù)的元素,而另一些則不允許。一些 collection 是有序的,而另一些則是無序的。JDK 不提供此接口的任何直接 實(shí)現(xiàn):它提供更具體的子接口(如 Set 和 List)實(shí)現(xiàn)。此接口通常用來傳遞 collection,并在需要最大普遍性的地方操作這些 collection。

List: 允許添加重復(fù)的元素,添加的元素與輸出的元素順序一致
Set:不允許添加重復(fù)的元素,添加的元素與輸出的元素順序不一致
Queue:添加的元素遵循先進(jìn)先出的原則
Deque:添加的元素遵循先進(jìn)后出的原則

可以通過向上造型實(shí)例化
Collection col=new List();
List list=new ArrayList()
可以簡化為:Collection col=new ArrayList;
ArrayList 是 List 接口的實(shí)現(xiàn)類
List又是 Collection 的子接口

類似的實(shí)現(xiàn)類可以參見 API

Collection 方法介紹
1、單元素操作

a、添加
boolean add()
可以添加 Object 元素,返回 boolean 值,可以添加任何類型的數(shù)據(jù)

col.add(1);//Integer
col.add("二");//String 
col.add(new People("張三"));
返回添加成功的 true一般不用

b、判斷集合中是否包含某個元素
比較兩個對象的值是否相同明,不是比較地址,即 contains 的底層實(shí)現(xiàn)是通過 equals 來判斷的

boolean isContains=col. contains("二");//true
boolean isContains=col.comtains(new People("張三"));//false
想要 people 類型也為 true 需要重寫 people 類中的 equals 方法

c、從集合中移除指定元素
boolean remove(Object obj);
boolean isRemoveOK=col.remove("二");

d、清空集合元素
void clear()
col.clear()//[]

e、判斷集合是否為空集合
boolean isEmpty=col.isEmpty();

f、獲得集合中的元素個數(shù)
int size();
col.size()

2、元素批量操作

Collection col1 = new ArrayList();
col1.add("java");
col1.add("PHP");
col1.add("C#");
System.out.println("col1:"+col1);

a、元素批量添加
boolean addAll(Collection col)
將集合col 中的元素全部添加到另一個集合中
Collection col2 = new HashSet();
boolean addAllOk = col2.addAll(col1);
System.out.println("col2:"+col2);

b、元素批量包含
containsAll(Collectioncol)
col2.add();
col2.add(".NET")
boolean isContainsAll =new cols.containsAll(col1)

c、批量刪除集合元素
boolean removeAll (Collection col)
boolean isRemoveAll=col2.

d、retainAll(Collection col)
僅僅保留某個集合的元素

3、元素的使用

Collection col = new ArrayList();
col1.add("java");
col1.add("PHP");
col1.add("C#");
System.out.println("col1:"+col1)
Collection 集合中沒法獲得單個元素
通過循環(huán)操作也不能實(shí)現(xiàn)集合元素的操作
col[i]//這種表示是錯誤的

迭代器

因?yàn)?collection 集合接口沒法通過自身的方法是實(shí)現(xiàn)元素的獲取及使用,只能依靠迭代器進(jìn)行集合元素遍歷,然后獲得使用

迭代器,可以通過集合獲得,然后對迭代器驚醒循環(huán)讀取,最終獲得

1、從集合中得到迭代器對象
Iterator iterator=col.iterator()
返回迭代器對象,其中包含集合中所有元素內(nèi)容
2、對迭代器驚醒遍歷,兵從迭代器中獲得元素
迭代器遍歷步驟:問、取、刪(不是必要的)
interator.hasNext()如果含有則返回 true
iterator.next()取出的是迭代器中所被問及的是否含有的那個元素
取出數(shù)據(jù)類型是 Object
刪除是當(dāng)前循環(huán)中取出的元素
注意:a、問是必要的,刪必須在取之后
b、在迭代過程中不允許對集合元素驚醒增、刪操作,不允許改變集合中元素的個數(shù)。



import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Test1 {
 public static void main(String[] args) {
  Collection col=new ArrayList();
  col.add(1);
  col.add("Jack");
  col.add(2);
  Iterator itera=col.iterator();
  while(itera.hasNext()){
   Object obj=itera.next();
   System.out.println(obj);
   if(obj.toString().equals("2")){
    itera.remove();
    System.out.println(col);
   }
   
  }
 }

}
增強(qiáng) for 循環(huán),又名新循環(huán)

JDK1.5之后的新特性
此循環(huán)就是為了方便數(shù)組,集合元素的遍歷
注意:引用類型就是數(shù)組元素,集合中元素的類型
引用就是當(dāng)前循環(huán)中獲得的元素
增強(qiáng) for 循環(huán)的注意事項(xiàng):
在增強(qiáng) for 循環(huán)中不允許對集合元素進(jìn)行操作
結(jié)論:增強(qiáng) for 循環(huán)的底層實(shí)現(xiàn),就是對迭代器的封裝

語法:for(引用類型 引用:數(shù)組或者集合){
循環(huán)中直接對引用進(jìn)行操作
}

public class NewForDemo03 {

    public static void main(String[] args) {
        //創(chuàng)建一個數(shù)組
        People[] peos = new People[10];
        //對數(shù)組遍歷:
        //方式一:普通for循環(huán)可以(略)
        //方式二:增強(qiáng)for循環(huán)
        for(People peo : peos){
            //每次循環(huán),peo就表示當(dāng)前循環(huán)獲得的元素。
            
        }
        
        /*
         * 創(chuàng)建集合
         */
        Collection col = new ArrayList();
        col.add("java");
        col.add("php");
        col.add("c");
        //對集合的遍歷:
        //方式一:借助于迭代器(略)
        //方式二:增強(qiáng)for循環(huán)
        for(Object obj : col){
            //每次循環(huán),obj就表示當(dāng)前循環(huán)獲得的元素。
            System.out.println(obj);
            /*
             * 在增強(qiáng)for循環(huán)中,無法實(shí)現(xiàn)對集合的增刪操作。
             */
//          col.add("c#");
//          col.remove("c");
        }
    }

}

class People{
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容