1.集合是儲存對象的,長度可變,可以封裝不同的對象
水城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
2.迭代器: 其實就是取出元素的方式(只能判斷,取出,移除,無法增加)
就是把取出方式定義在集合內(nèi)部,這樣取出方式就可以直接訪問集合內(nèi)部的元素,那么取出方式就被定義成了內(nèi)部類.
二每一個容器的數(shù)據(jù)結(jié)構(gòu)不同,所以取出的動作細節(jié)也不一樣.但是都有共性內(nèi)容判斷和取出,那么可以將共性提取,這些內(nèi)部類都符合一個規(guī)則Iterator
Iterator it = list.iterator(); while(it.hasNext()){ System.out.println(it.next()); }
另一種是
for(Iterator it = it.iterator(); it.hasNext();){ System.out.printin(it.next());}
Collection:
(1).List:元素是有序的,元素可以重復(fù).因為改集合體系有索引.
!--ArrayList:底層的數(shù)據(jù)結(jié)構(gòu)使用的是數(shù)組結(jié)構(gòu) ,特點:查詢速度快,但是增刪慢.線程不同步
!--LinkedList:底層使用的是;鏈表數(shù)據(jù)結(jié)構(gòu),特點:增刪速度快,查尋速度慢.
!--Vector:底層的數(shù)據(jù)結(jié)構(gòu)使用的是數(shù)組結(jié)構(gòu) ,.線程同步,速度慢,被ArrayList替代l
list:特有方法,凡是可以操作角標的方法都是該體系特有的方法
增:add(index,element); addAll(index,Collection);
刪:remove(index);
改:set(index,element);
查:get(index); subList(from,to); ListIterator();(重點)
注意:判斷同一對象,equals方法
public boolean equals(Object obj){ if(!(obj instanceof Person)) return false; Person p=new Person(); return this.name.equals(p.name)&&this.age==p.age; }
(2). Set:元素是無序的(元素存入和取出的順序是不一定一致的),不可以重復(fù)
!--HashSet:底層數(shù)據(jù)結(jié)構(gòu)是哈希表
HashSet使如何保證元素唯一性的呢?
是通過元素的兩個方法,hashcode和equals來完成
如果元素的HashCode相同才會判斷equals是否為true,反の,不會調(diào)用
對于判斷元素是否存在,以及刪除等操作,依賴的方法是元素的hashcode和equals方法
!--TreeSet:
--------------------------------------------------------------------
1.toArray()方法:是遍歷用的(把集合轉(zhuǎn)變?yōu)閿?shù)組)
public class ToArray { public static void main(String[] args) { Collection c=new ArrayList(); c.add("hello"); c.add("world"); c.add("java"); Object[] obj=c.toArray(); for(int x=0;x < obj.length;x++){ System.out.println(obj[x]); } } }
1.1asList()方法,把數(shù)組轉(zhuǎn)變?yōu)榧?/strong>
//定義一個數(shù)組 //String[] s={"hello","world","java"}; //Listlist=Arrays.asList(s); //直接引用 List list=Arrays.asList("hello","world"); for(String s1:list){ System.out.println(s1); }
注意:雖然他可以把數(shù)組轉(zhuǎn)變成集合,但是本質(zhì)是數(shù)組,所以他的長度不能改變,不能增刪
2.數(shù)組長度是length方法,字符串的長度是length(),集合求長度的方法是size.
3. Iterator迭代器是集合的特有遍歷方法
while方法:(習(xí)慣用法)
Iterator it=list.iterator();//list是集合 while(it.hasNext()){ //判斷是否有下一個數(shù)據(jù) System.out.println(it.next()); }
for循環(huán)方法:(效率高,it用完就是垃圾)
for(Iterator it=c.iterator();it.hasNext();){ System.out.println(it.next()); }
注意:不能連續(xù)it.next(),使用一次就換一個對象
4.list集合特有的遍歷方法:就是size和get()的結(jié)合
for(int x=0; x
5.list特有的迭代器
ListIteratorlit=list.listIterator(); while(lit.hasNext()){ System.out.println((String)lit.next()); } while(lit.hasPrevious()){ System.out.println((String)lit.previous()); }
注意:ListIterator可以實現(xiàn)逆向遍歷,但是必須現(xiàn)正向遍歷,否則無意義
6.HashTable和HashMap的區(qū)別
HashTable:線程安全,效率低,不允許null建和null值.
HashMap:線程不安全,效率高,允許null建和null值.
7.Collection和Collections的區(qū)別?
Collection:是單列集合的頂層接口,有子接口List和Set
Collections:是針對集合操作的工具類,有對集合進行排序和二分查找的方法
8.二分查找找不到,返回 -(最大索引+1)
以上這篇基于java中集合的概念(詳解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持創(chuàng)新互聯(lián)。