數(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é)果相同