- 集合: 是一種容器
- 數(shù)組: 長(zhǎng)度固定 可以放任意類型的數(shù)據(jù) 有下標(biāo)
- 集合: 長(zhǎng)度不固定 可以放任意類型的對(duì)象, 有的有下標(biāo),有的沒(méi)有
- 有序:展示的順序和加入的順序一致
集合的繼承關(guān)系;
QQ截圖20170811093932.png
Collection接口的實(shí)現(xiàn)類ArrayList的常用方法:
package demo2;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import org.omg.CORBA.SystemException;
public class TestCollection {
public static void main(String[] args) {
Collection collection = new ArrayList();
collection.add("abc");
collection.add(4);//將4包裝成了Integer對(duì)象
collection.add(1);
Collection collection2 = new ArrayList();
collection2.add(2);
collection2.add(56);
//將collection加到了collection2中
collection2.addAll(collection);
//刪
// System.out.println(collection.remove("abc"));
System.out.println(collection);
//不止會(huì)清楚collection中所有元素,還會(huì)刪除collection2中
//和collection相同的的元素
collection2.removeAll(collection);
//清除所有
// collection.clear();
//打印集合長(zhǎng)度,集合長(zhǎng)度指集合中長(zhǎng)度的個(gè)數(shù)
System.out.println(collection.size());
//isEmpty 判斷集合是否為空,沒(méi)有數(shù)據(jù)則返回true
System.out.println(collection.isEmpty());
collection.add(4);
//判斷集合中是否包含指定的參數(shù)
System.out.println(collection.contains(4));
//判斷是否完全包含
System.out.println(collection.contains(collection2));
//toArray()
Object[] objects = collection2.toArray();
for (Object object : objects) {
System.out.println(object);
}
//2增強(qiáng)for循環(huán)
for(Object object : collection2)
{
collection2.remove(object);
System.out.println(object);
}
//迭代器 hasNext() 判斷是否有下個(gè)元素,next()獲取下一個(gè)元素并將指針移向下一個(gè)
Iterator iterator = collection.iterator();
while(iterator.hasNext())
{
System.out.println(iterator.next());
iterator.remove();//刪除元素
}
}
}
ArrayList的四種輸出方法
注意:
在增強(qiáng)for循環(huán)中如果修改集合會(huì)拋出并發(fā)修改異常,有原因是在遍歷的時(shí)候給集合創(chuàng)建了一個(gè)副本遍歷的是副本,在遍歷副本的過(guò)程中改變?cè)瓉?lái)集合的結(jié)構(gòu)所以會(huì)出錯(cuò)
但是在迭代器中,迭代器iteratir有自帶的remove(),它會(huì)刪除副本中的元素所以不會(huì)拋異常
package TsetArrayList;
/*
* 缺點(diǎn):新增和刪除與元素的時(shí)候需要移動(dòng)大量的元素,效率較低
* 優(yōu)點(diǎn):查找和修改的時(shí)候根據(jù)下標(biāo)遍歷 效率高
*
*/
import java.util.ArrayList;
import java.util.Iterator;
public class Test1 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("abc");
list.add("def");
ArrayList list2 = new ArrayList<>();
list.addAll(4,list);
list2.add("二狗");
list2.add("小香菇");
list.add("康帥傅");
//填充 int 類型的數(shù) 認(rèn)為是下標(biāo)
list.remove(4);//元素有4 下標(biāo)有4 它會(huì)刪下標(biāo)為4的
list.isEmpty();
//list.clear();
//輸出下標(biāo)位置
System.out.println(list.indexOf("def"));
//list 遍歷方式
Object[] objects = list.toArray();
//增強(qiáng)for循環(huán)
for (Object object : list2) {
System.out.println(object);
}
//迭代器
Iterator iterator = list.iterator();
while(iterator.hasNext())
{
System.out.println(iterator.next());
}
//循環(huán)get方法
for(int i=0;i<list.size();i++)
{
System.out.println(list.get(i));
}
}
}