Java-集合詳解

數(shù)組時大小固定的,并且同一個數(shù)組只能存放類型一樣的數(shù)據(jù)(基本類型/引用類型)
java集合可以存儲和操作數(shù)目不固定的一組數(shù)據(jù)。
java集合只能存放引用類型的數(shù)據(jù),不能存放基本數(shù)據(jù)類型。
java集合主要分為三種類型:
Set(集)
List(列表)
Map(映射)
Collection 接口
Collection是最基本的集合接口,聲明了適用于Java集合(只包括Set和List)的通用方法。
Set和List都繼承了Collection,Map沒有

1.Collection接口的方法:

(1)boolean add(Object o):向集合中加入一個對象的引用

    Collection<String> t1 = new ArrayList<>();
    t1.add("Jack");
    t1.add("Merry");
    System.out.println(t1);

運行結(jié)果

 [Jack, Merry]

(2)boolean remove(Object o):從集合中刪除一個對象的引用

    t1.remove("Jack");
    System.out.println(t1);

運行結(jié)果:

[Merry]

(3)int size():返回集合中元素的數(shù)目

    System.out.println(t1.size());

運行結(jié)果

1

(4)boolean contains(Object o):判斷集合中是否持有特定對象的引用

    if (t1.contains("Merry")){
        System.out.println("有Merry");
    }else {
        System.out.println("沒有Merry");
    }

運行結(jié)果

有Merry

(5)boolean isEmpty():判斷集合是否為空

if (t1.isEmpty()){
        System.out.println("是空的");
    }else {
        System.out.println("不是空的");
    }

運行結(jié)果

    不是空的

(6)boolean equals(Obejec o):判斷兩個集合是否相同(比較集合里面的內(nèi)容)

    Collection<String> t2 = new ArrayList<>();
    t2.add("Jack");
    t2.add("Merry");
    t2.add("Rose");
    t2.add("Tom");

    if (t1.equals(t2)){
        System.out.println("t1和t2相同");
    }else {
        System.out.println("t1和t2不同");
    }

運行結(jié)果

t1和t2不同

(7)void clear():刪除集合中所有的對象,即不再持有這些對象的引用

    t2.clear();
    System.out.println(t2);

運行結(jié)果

[]
2.Interator接口

用來遍歷集合中的元素

(1)hasNext():判斷集合中元素是否遍歷完畢,如果沒有,就返回true
------- next():返回下一個元素
a.

    Iterator iterator = t2.iterator();
    while (iterator.hasNext()){
        System.out.println(iterator.next());
    }

運行結(jié)果:

Jack
Merry
Rose
Tom

b.

    for (String obj:t2){
        System.out.println(obj);
    }

c.

    for (int i  = 0; i < t2.size(); i++){
        System.out.println(((ArrayList<String>)t2).get(i));
    }

運行結(jié)果都一樣

3.List(列表)

List的特征是以線性方式存儲,集合中可以存放重復(fù)對象。
List接口主要實現(xiàn)類包括:
ArrayList():代表長度可以改變的數(shù)組??梢詫υ剡M行隨機的訪問。向ArrayList()中插入與刪除元素的速度慢。
對于List的隨機訪問來說,就是只隨機來檢索位于特定位置的元素。
List的get(int index)方法放回集合中參數(shù)index指定的索引位置的對象,下標從"0"開始。

(1)

    ArrayList<Integer> score = new ArrayList<>();
    score.add(2);
    score.add(4);// 在末尾添加
    score.add(0,1);// 在指定位置插入
    System.out.println(score);

運行結(jié)果:

 [1, 2, 4]

(2)訪問指定元素

        score.get(1);

(3)修改一個元素

    score.set(0,0);
    System.out.println(score);

運行結(jié)果:

 [0, 2, 4]

(4)刪除
(a)

    score.remove(0);//刪除指定位置的元素
    System.out.println(score);

運行結(jié)果

 [2, 4]

(b)

    score.remove((Integer)2);//刪除指定的對象
    System.out.println(score);

運行結(jié)果:

[4]

(5)將一個集合里面的內(nèi)容添加到當前集合中

    ArrayList<Integer> c1 = new ArrayList<>();
    c1.add(3);
    c1.add(9);
    c1.add(6);

    score.addAll(c1);
    System.out.println(score);

運行結(jié)果:

[4, 3, 9, 6]

(6)取兩個集合的交集

    ArrayList<Integer> c2 = new ArrayList<>();
    c2.add(2);
    c2.add(3);
    c2.add(4);
    c2.add(1);
    
    score.retainAll(c2);//取兩個集合的交集
    System.out.println(score);

運行結(jié)果:

[4, 3]

(7)訪問某個對象在集合里面的索引

    ArrayList<Integer> c3 = new ArrayList<>();
    c3.add(1);
    c3.add(2);
    c3.add(3);
    c3.add(1);
    c3.add(2);

    System.out.println(c3.indexOf(1));// 第一次出現(xiàn)的位置
    System.out.println(c3.lastIndexOf(1));// 最后一次出現(xiàn)的位置

運行結(jié)果

0
3

(8)將ArrayList轉(zhuǎn)化為普通數(shù)組
a:

    Integer[] objects = new Integer[c3.size()];
    c3.toArray(objects);
    for (Integer i:objects){
        System.out.println(i);
    }

運行結(jié)果:

 1
 2
 3
 1
 2

b:

    Object[] objects1 = c3.toArray();
    for (Object i:objects1){
        System.out.println(i);
    }

c:

    Iterator iterator = a4.iterator();
    while(iterator.hasNext()){
        System.out.println(iterator.next());
    }

三種方式運行結(jié)果相同

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

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

  • http://www.cnblogs.com/jasonHome/p/5969574.html 結(jié)合框架體系應(yīng)該最...
    shhdjjj閱讀 1,254評論 0 0
  • Java集合詳解 [if !supportLists]一、[endif]集合的由來 通常,我們的程序需要根據(jù)程序運...
    秋刀魚茶泡飯QAQ閱讀 502評論 1 2
  • 四、集合框架 1:String類:字符串(重點) (1)多個字符組成的一個序列,叫字符串。生活中很多數(shù)據(jù)的描述都采...
    佘大將軍閱讀 867評論 0 2
  • 引言: 每一顆螺絲釘都很重要,差之毫厘謬以千里。 可以直接擼代碼,記著點贊:Demo Java集合框架有兩個根接口...
    半路自由閱讀 848評論 0 1
  • 一、基礎(chǔ)知識:1、JVM、JRE和JDK的區(qū)別:JVM(Java Virtual Machine):java虛擬機...
    殺小賊閱讀 2,553評論 0 4

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