<small>
List集合
collection接口下的子接口
集合特點(diǎn):元素添加與輸出有序谨读,元素可重復(fù)
List接口無(wú)法實(shí)例化
可以通過(guò)下標(biāo)操作元素(List最大特點(diǎn))
List list=new ArrayList();
list.add("java")
list.add("C")
list.add("java")
list.add("php")
system.out.println(list);
add (int index.Object obi)
list.add(2,"IOS")
指定下標(biāo)的添加集合元素窿冯,原位置元素依次向后移位
插入元素
Object(E) remove(int index)
制定下標(biāo)移除元素,并將移除元素返回
Object obj=list.remove(3);
set(int index,Object obj)
指定下標(biāo)的元素替換氧卧,并返回替換的元素
Object obj1=list.set(list.size()-1,".NET")
object get(int index)
類(lèi)似于數(shù)組Array(index)
Object obj2=list.get(4);
int indexOf(Object obj)
獲得指定元素的下標(biāo)位置
int cIndex=list.indexOf("C");
addAll(int index, List list)
指定下標(biāo)的添加整體
boolean euqals(Collection col)
比較兩個(gè)集合值是否相同
注意:順序比較谭企,元素順序要一致
由于List集合可以通過(guò)下標(biāo)操作元素的特點(diǎn),所以可以通過(guò)普通的for循環(huán)來(lái)實(shí)現(xiàn)集合遍歷
//方式一:普通for循環(huán)
for(int i=0; i<list.size(); i++){
System.out.println(list.get(i));
}
System.out.println("***********************");
//方式二:迭代器
Iterator ite = list.iterator();
while(ite.hasNext()){
System.out.println(ite.next());
}
System.out.println("***********************");
//方式三:增強(qiáng)for循環(huán)
for(Object obj : list){
System.out.println(obj);
List sublist=list.sublist(2,8)
截取集合,截取后返回一個(gè)子集合
注意事項(xiàng):返回的子集合并非是新對(duì)象侮穿,而是直接將元對(duì)象中的元素給予繁育呈現(xiàn)出來(lái)而已,若想改變子集合的元素內(nèi)容毁嗦,則必定會(huì)導(dǎo)致原集合元素也發(fā)生改變撮珠,
建議:不要對(duì)子集合進(jìn)行元素修改操作
List list=new ArrayList();
object[] toArray()
集合→數(shù)組
將集合轉(zhuǎn)換為Object類(lèi)型的數(shù)組
將集合轉(zhuǎn)換為指定類(lèi)型的數(shù)組時(shí)金矛,要對(duì)集合指定泛型
Object[] objs=List.toArray();
String[] str=list.
集合轉(zhuǎn)換過(guò)來(lái)的數(shù)組是一個(gè)新對(duì)象芯急,對(duì)數(shù)組的元素使用不會(huì)影響到原集合
數(shù)組→集合
通過(guò)Arrays工具類(lèi)中的asList方法
List<T> asList(T list)
List list=Arrays.asList(strs);
數(shù)組轉(zhuǎn)換過(guò)來(lái)的集合不是新對(duì)象,而是對(duì)數(shù)組的另一種呈現(xiàn)方式驶俊,對(duì)集合元素操作娶耍,其本質(zhì)就是對(duì)數(shù)組元素的操作。
集合不允許做增刪操作(不能改變?cè)貍€(gè)數(shù))饼酿,只可以實(shí)現(xiàn)元素內(nèi)容的替換操作榕酒,集合元素的改變,必定會(huì)影響到原數(shù)組
List<String> list = new ArrayList();
list.add("java");
list.add("C");
list.add(".NET");
list.add("PHP");
System.out.println("list集合:"+list);
/*
* 集合 → 數(shù)組
* 1故俐、方法1:集合轉(zhuǎn)換成Object類(lèi)型的數(shù)組
* Object[] toArray()
*
* 2想鹰、方法2:集合轉(zhuǎn)換成指定類(lèi)型的數(shù)組
* T[] toArray(T[] t)
* 注意:必須要求集合有泛型指定。
*/
Object[] objs = list.toArray();
System.out.println("list轉(zhuǎn)換成數(shù)組:"+ Arrays.toString(objs));
String[] strs = list.toArray(new String[list.size()]);
System.out.println("list轉(zhuǎn)換成指定泛型的數(shù)組:"+ Arrays.toString(strs));
/*
* 集合轉(zhuǎn)換過(guò)來(lái)的數(shù)組药版,特點(diǎn):
* 1辑舷、集合轉(zhuǎn)換過(guò)來(lái)的數(shù)組是一個(gè)新對(duì)象,
* 對(duì)數(shù)組元素使用不會(huì)影響到原集合槽片。
*/
strs = Arrays.copyOf(strs, strs.length+1);
strs[strs.length-1] = "我愛(ài)你";
System.out.println("擴(kuò)容之后的數(shù)組:"+ Arrays.toString(strs));
System.out.println("數(shù)組擴(kuò)容后的集合:"+list);
集合的底層實(shí)現(xiàn)何缓,其實(shí)就是數(shù)組
List總結(jié):
1、集合特點(diǎn):添加有序还栓,可重復(fù)碌廓,可通過(guò)下標(biāo)操作元素
2、實(shí)現(xiàn)類(lèi):ArrayList剩盒,LinkedList谷婆,Vector
物理方法上,三者阿迷區(qū)別辽聊,性能上有所區(qū)別
ArrayList:線性結(jié)構(gòu)纪挎,查詢(xún)快,增刪慢
LinkedList:雙向鏈表結(jié)構(gòu)身隐,查詢(xún)慢廷区,增刪快
Vector:ArrayList與LinkedList都是非線程安全的,vector是線程安全的
set集合總結(jié):
也是Collections的子接口
特點(diǎn):添加與輸出順序不一致贾铝,簡(jiǎn)稱(chēng)添加無(wú)序
元素補(bǔ)課重復(fù)
如果要想添加與輸出的順序一致
可以使用Set的子接口的LinkedHashSet
Set set=new HashSet();
如果想讓Set集合元素實(shí)現(xiàn)自然排序隙轻,可以用TreeSet