集合操作

<small>

集合的概念

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

Collection

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

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

可以通過(guò)向上造型實(shí)例化
Collection col=new List();
List list=new ArrayList()
可以簡(jiǎn)化為: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、判斷集合中是否包含某個(gè)元素
比較兩個(gè)對(duì)象的值是否相同明,不是比較地址,即 contains 的底層實(shí)現(xiàn)是通過(guò) equals 來(lái)判斷的

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、獲得集合中的元素個(gè)數(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 中的元素全部添加到另一個(gè)集合中
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)
僅僅保留某個(gè)集合的元素

3、元素的使用

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

迭代器

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

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

1、從集合中得到迭代器對(duì)象
Iterator iterator=col.iterator()
返回迭代器對(duì)象,其中包含集合中所有元素內(nèi)容
2、對(duì)迭代器驚醒遍歷,兵從迭代器中獲得元素
迭代器遍歷步驟:?jiǎn)枴⑷?、刪(不是必要的)
interator.hasNext()如果含有則返回 true
iterator.next()取出的是迭代器中所被問(wèn)及的是否含有的那個(gè)元素
取出數(shù)據(jù)類型是 Object
刪除是當(dāng)前循環(huán)中取出的元素
注意:a、問(wèn)是必要的,刪必須在取之后
b、在迭代過(guò)程中不允許對(duì)集合元素驚醒增、刪操作,不允許改變集合中元素的個(gè)數(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)中不允許對(duì)集合元素進(jìn)行操作
結(jié)論:增強(qiáng) for 循環(huán)的底層實(shí)現(xiàn),就是對(duì)迭代器的封裝

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

public class NewForDemo03 {

    public static void main(String[] args) {
        //創(chuàng)建一個(gè)數(shù)組
        People[] peos = new People[10];
        //對(duì)數(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");
        //對(duì)集合的遍歷:
        //方式一:借助于迭代器(略)
        //方式二:增強(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)中,無(wú)法實(shí)現(xiàn)對(duì)集合的增刪操作。
             */
//          col.add("c#");
//          col.remove("c");
        }
    }

}

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

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

  • 第一種:struts1.2循環(huán)遍歷元素,name是結(jié)果集。引用標(biāo)簽庫(kù)<%@ taglib uri="http://...
    小沙鷹168閱讀 1,720評(píng)論 0 0
  • 昨天簡(jiǎn)單介紹了集合Collection和其的一些基本方法,還有一些集合其他的通用方法。 1)addAll、cont...
    smallnumber閱讀 285評(píng)論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,539評(píng)論 19 139
  • 測(cè)試項(xiàng)目Github地址:KotlinForJava 前文傳送:Kotlin入門第一課:從對(duì)比Java開始初次嘗試...
    DylanW閱讀 1,541評(píng)論 0 2
  • 集合操作 以下集合操作返回的都是個(gè)Collection 并集CollectionUtils.union(容器1,容...
    VikingOldYoung閱讀 1,172評(píng)論 0 1

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