類集框架1

1.單值保存的最大父接口:Collection

在Collection中定義了15個方法站辉,在所以的方法中划栓,只有兩個方法最為常用:add(),iterator().從開發(fā)來講兑巾,很少直接使用Collection。

2.允許重復(fù)的子接口:LIst

public interface List<E> extends Collection<E>
List接口繼承了Collection接口茅姜,但是List接口對Collection接口進行了大量的擴充闪朱。

No 方法名稱 描述
1 public E get(int index) 取得指定索引位置上的數(shù)據(jù)
2 public E set(int index,E element) 修改指定索引位置上的數(shù)據(jù)
3 public ListIterator<E>listIterator 為ListIterator接口實例化

List接口有兩個常用的子類ArrayList和Vector

2.1 ArrayList

public class ArrayList<E>
extends AbstractList<E>
implements List<E> ,RandomAccess,Coloneable,Serializable
使用ArrayList的主要目的是為List接口實例化,所以操作方法都以List接口為主

例:使用ArrayList進行List接口的功能驗證
import java.util.ArrayList; import java.util.List; public class test{ public static void main(String[] args) { List<String>all=new ArrayList<String>();//實例化List接口 all.add("hello");//添加內(nèi)容 all.add("hello"); all.add("World"); for(int x = 0 ;x<all.size();x++){ System.out.println(all.get(x)); }
程序運行結(jié)果:[hello, hello,World]

2.2 Vector

例:使用Vector進行List接口的功能驗證
import java.util.Vector; import java.util.List; public class test{ public static void main(String[] args) { List<String>all=new Vector<String>();//實例化List接口 all.add("hello");//添加內(nèi)容 all.add("hello"); all.add("World"); for(int x = 0 ;x<all.size();x++){ System.out.println(all.get(x)); }
程序運行結(jié)果:[hello, hello,World]

ArrayList 和Vector 都是List接口的子類

ArrayList和Vector區(qū)別

No 區(qū)別 ArrayList Vector
1 推出時間 JDK1.2 JDK1.0
2 性能 采用異步處理方式奋姿,性能更高 采用同步處理方式,性能相對較低
3 安全性 非線程安全 線程安全
4 輸出 Iterator称诗、ListIterator、foreach Iterator头遭、ListIterator、foreach计维、Enumeration

3.不允許重復(fù)的子接口:Set

public interface Set<E>extends Collection <E>
Set子接口完整的繼承了Collection接口,Set子接口常用的兩個子類為HashSet和TreeSet

3.1散列存放的子類:HashSet

HashSet使用一種散列(無序)的方式保存集合數(shù)據(jù)

例:使用Set接口
import java.util.HashSet; import java.util.Set; public class test{ public static void main(String[] args) { Set<String> all=new HashSet<String>(); all.add("hello"); all.add("hello"); all.add("world"); System.out.println(all); } }
程序運行結(jié)果:[world, hello]

使用Set保存數(shù)據(jù)的時鲫惶,集合中重復(fù)數(shù)據(jù)沒有保存,并且無序

3.2排序存放的子類:TreeSet

使用TreeSet
`import java.util.Set;
import java.util.TreeSet;
public class test{

public static void main(String[] args) {
    Set<String> all=new TreeSet<String>();
    all.add("c");
    all.add("b");
    all.add("a");
    System.out.println(all);
}

}`
程序運行結(jié)果:[a, b, c]

TreeSet排序欠母,自定義類排序,使用Comparable

Source>Generate hashSet

4.集合的輸出操作

4種輸出方式:Iterator,ListIterator,Enumeration,foreach

4.1迭代輸出:Iterator

Iterator中常用方法

No 方法名稱 描述
1 public boolean hasNext() 判斷是否有下一個元素
2 public E next() 取出當(dāng)前元素
3 public void remove() 移除當(dāng)前元素

如何取得Iterator的實例化對象踩寇?Collection繼承了一個Iterator接口,在Iterator接口中定義了一個方法“public Iterator<T>iterator()

例:使用Iterator輸出集合數(shù)據(jù)
import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class test{ public static void main(String[] args) { List<String> all=new ArrayList<String>(); all.add("hello"); all.add("hello"); all.add("world"); Iterator<String>iter =all.iterator(); while(iter.hasNext()){ String str = iter.next(); System.out.print(str+" "); } } }
程序運行結(jié)果:hello hello world

在項目開發(fā)中俺孙,只要遇到集合對象輸出問題辣卒,一定要使用Iterator接口完成

4.2 雙向迭代輸出:ListIterator(了解)

Iterator可以完成由前向后的單向輸出操作鼠冕,如果希望完成由前向后和由后向前輸出的話可以利用ListIterator接口完成

ListIterator接口的擴充方法

No 方法名稱 描述
1 public boolean hasPrevious() 判斷是否有前一個元素
2 public E previous() 取出前一個元素

如果要取得ListIterator接口的實例化對象添寺,只能后依靠List接口胯盯,在List接口中存在方法懈费,為ListIterator接口實例化:public ListIterator<E>listIterator()

例:執(zhí)行雙向迭代
`import java.util.ArrayList;

import java.util.List;
import java.util.ListIterator;
public class test{
public static void main(String[] args) {
List<String> all=new ArrayList<String>();
all.add("hello");
all.add("hello");
all.add("world");
ListIterator<String>iter =all.listIterator();
System.out.print("從前向后輸出");
while(iter.hasNext()){
String str = iter.next();
System.out.print(str+" ");
}
System.out.print("\n"+"從后向前輸出");
while(iter.hasPrevious()){
String str =iter.previous();
System.out.print(str+" ");
}
}
}`
程序運行結(jié)果:
從前向后輸出hello hello world
從后向前輸出world hello hello

對于由后向前的輸出操作,在進行前一定要首先發(fā)生由前向后的輸出博脑。由于此輸出接口只有List可以使用憎乙,所以在開發(fā)中幾乎不會出現(xiàn)

4.3 Enumeration

Enumeration是最早的輸出接口,最早稱為枚舉叉趣,在JDK1.0時已經(jīng)推出泞边,在JDK1.5的時候進行了擴充,主要增加了泛型疗杉,在Enumeration接口里面只定義了兩個方法

No 方法名稱 描述
1 public boolean hasMoreElements() 判斷是否有下一個值
2 public E nextElement() 取出當(dāng)前元素

要取得Enumeration的實例化對象阵谚,不能依靠Collection接口,只能依靠Vector烟具,在Vector中定義了方法public Enumreation<E>elements()

例:使用Enumreation進行輸出
import java.util.Enumeration; import java.util.Vector; public class test{ public static void main(String[] args) { Vector<String> all=new Vector<String>(); all.add("hello"); all.add("hello"); all.add("world"); Enumeration<String>enu =all.elements(); System.out.print("從前向后輸出"); while(enu.hasMoreElements()){ String str = enu.nextElement(); System.out.print(str+" "); } } }
程序結(jié)果輸出:從前向后輸出hello hello world

4.4 foreach

例foreach
import java.util.ArrayList; import java.util.List; public class test{ public static void main(String[] args) { List<String> all=new ArrayList<String>(); all.add("hello"); all.add("hello"); all.add("world"); for(String str:all){ System.out.println(str+" "); } } }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末梢什,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子朝聋,更是在濱河造成了極大的恐慌嗡午,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冀痕,死亡現(xiàn)場離奇詭異荔睹,居然都是意外死亡,警方通過查閱死者的電腦和手機言蛇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門僻他,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人腊尚,你說我怎么就攤上這事吨拗。” “怎么了跟伏?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵丢胚,是天一觀的道長。 經(jīng)常有香客問我受扳,道長携龟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任勘高,我火速辦了婚禮峡蟋,結(jié)果婚禮上坟桅,老公的妹妹穿的比我還像新娘。我一直安慰自己蕊蝗,他們只是感情好仅乓,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布夸楣。 她就那樣靜靜地躺著子漩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪紧显。 梳的紋絲不亂的頭發(fā)上缕棵,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機與錄音篙程,去河邊找鬼忽匈。 笑死,一個胖子當(dāng)著我的面吹牛郭厌,可吹牛的內(nèi)容都是我干的雕蔽。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼扇售,長吁一口氣:“原來是場噩夢啊……” “哼承冰!你這毒婦竟也來了食零?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤娜搂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后百宇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡昌粤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年婚苹,在試婚紗的時候發(fā)現(xiàn)自己被綠了鸵膏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谭企。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡债查,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盹廷,到底是詐尸還是另有隱情久橙,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布缸榄,位于F島的核電站祝拯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鹰贵。R本人自食惡果不足惜康嘉,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望腊瑟。 院中可真熱鬧,春花似錦闰非、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至球昨,卻和暖如春眨攘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背共螺。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工藐不, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人雏蛮。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓底扳,卻偏偏與公主長得像贡耽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蒲赂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容

  • /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home...
    光劍書架上的書閱讀 3,856評論 2 8
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法木蹬,類相關(guān)的語法若皱,內(nèi)部類的語法尘颓,繼承相關(guān)的語法疤苹,異常的語法,線程的語...
    子非魚_t_閱讀 31,581評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理卧土,服務(wù)發(fā)現(xiàn)尤莺,斷路器,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗颤霎。 張土汪:刷leetcod...
    土汪閱讀 12,724評論 0 33
  • 阿狗是一朵云彩捷绑。他從白天飄到夜里氢妈,天氣也多云轉(zhuǎn)陰了首量。當(dāng)他還只是一滴水時进苍,太陽就在他心里灑下暖洋洋的影子。他想觉啊,能見...
    會飛的麥芒閱讀 241評論 0 2