JAVA核心技術總結(十三章)集合

  1. IteratorListIterator的區(qū)別
    ListIteratoradd()方法躁劣,可以向List中添加對象囚聚,而Iterator不能
    ListIteratorIterator都有hasNext()next()方法唉铜,可以實現(xiàn)順序向后遍歷,但是ListIteratorhasPrevious()previous()方法,可以實現(xiàn)逆向(順序向前)遍歷影锈。Iterator就不可以险掀。
    ListIterator可以定位當前的索引位置嗜价,nextIndex()previousIndex()可以實現(xiàn)。Iterator沒有此功能默怨。

  2. ArrayList(變長數(shù)組)和LinkedList(雙向鏈表也可以當做棧使用)都是List的繼承讯榕,可以初始化為

List<String> arr = new ArrayList<String>();
//or
List<String> arr = new LinkedList<String>();

并將List<String>作為參數(shù)傳入方法,這樣以后想改變數(shù)據(jù)結構只需要修改初始化的地方即可

  1. HashSetTreeSet都是Set的繼承匙睹,可初始化為
Set<String> s = new HashSet<String>();
//or
Set<String> s = new TreeSet<String>();

HashSet是無序的無重復元素的集合愚屁,TreeSet是排序集合,可以在構造的時候傳入比較器痕檬,根據(jù)比較器進行排序

  1. 隊列有ArrayDeque(雙端隊列)和PriorityQueue(優(yōu)先隊列霎槐,高效刪除最小元素),他們繼承的超類不同

  2. 映射表有HashMapTreeMap梦谜,前者無序丘跌,后者對鍵進行排序,都是Map的繼承唁桩,可以初始化為

Map<String,Employee> staff = new TreeMap<String,Employee>();
//or
Map<String,Employee> staff = new HashMap<String,Employee>();

注意Map沒有迭代器

  1. 集合的深拷貝闭树,直接初始化時拷貝,例如
List<String> lst = new ArrayList<>();
lst.add("a");
lst.add("b");
lst.add("c");
List<String> lst2 = new ArrayList<>(lst);
  1. 數(shù)組的深拷貝
  • 使用循環(huán)結構荒澡。這種方法最靈活报辱。唯一不足的地方可能就是代碼較多
  • 使用Object類的clone()方法,這種方法最簡單单山,得到原數(shù)組的一個副本碍现。靈活形也最差。效率最差米奸,尤其是在數(shù)組元素很大或者復制對象數(shù)組時昼接。
  • 使用Systemsarraycopy這種方法被告之速度最快,并且靈活性也較好躏升,可以指定原數(shù)組名稱辩棒、以及元素的開始位置、復制的元素的個數(shù)膨疏,目標數(shù)組名稱一睁、目標數(shù)組的位置。
  1. 數(shù)組和集合的轉換
  • 集合轉數(shù)據(jù)
    • 一種無參數(shù)返回Object[]
    • 一種帶參數(shù)返回指定類型佃却,注意帶參數(shù)形式中者吁,要指明數(shù)組的大小,如果參數(shù)中new的數(shù)組大小裝不下欲轉換的數(shù)組元素饲帅,則重新分配一塊空間給轉換后的數(shù)組复凳。如果參數(shù)中new的數(shù)組大小大于或等于要轉換的數(shù)組大小瘤泪,則會返回該數(shù)組,多余的位置用null填充育八。
List list = new ArrayList();
Object[] objectArray1 = list.toArray();  //無參數(shù)
String[] array1 = list.toArray(new String[list.size()]);  //帶泛型參數(shù)
  • 數(shù)組轉集合
Integer[] a = {1,2,3,4};
List<Integer> list = Arrays.asList(a);
//or
List<Integer> list = Arrays.asList(1,2,3,4);
  1. Collections類中包含許多關于集合的算法对途,例如
Collections.shuffle(List<T> list);
Collections.sort(List<T> list);
  1. 最好將Collection接口作為通用集合接口傳入方法,這樣增加API的通用性(即可以傳入List髓棋,Set实檀,Map等),如
void fillMenu(Jmenu menu, Collection<JmenuItem> items)
{
   for (JMenuItem item : Items)
       Menu.add(item);
}

面向接口編程思想

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末按声,一起剝皮案震驚了整個濱河市膳犹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌签则,老刑警劉巖须床,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異渐裂,居然都是意外死亡豺旬,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門芯义,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哈垢,“玉大人,你說我怎么就攤上這事扛拨。” “怎么了举塔?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵绑警,是天一觀的道長。 經(jīng)常有香客問我央渣,道長计盒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任芽丹,我火速辦了婚禮北启,結果婚禮上,老公的妹妹穿的比我還像新娘拔第。我一直安慰自己咕村,他們只是感情好,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布蚊俺。 她就那樣靜靜地躺著懈涛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪泳猬。 梳的紋絲不亂的頭發(fā)上批钠,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天宇植,我揣著相機與錄音,去河邊找鬼埋心。 笑死指郁,一個胖子當著我的面吹牛,可吹牛的內容都是我干的拷呆。 我是一名探鬼主播坡氯,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼洋腮!你這毒婦竟也來了箫柳?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤啥供,失蹤者是張志新(化名)和其女友劉穎悯恍,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伙狐,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡涮毫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了贷屎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罢防。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖唉侄,靈堂內的尸體忽然破棺而出咒吐,到底是詐尸還是另有隱情,我是刑警寧澤属划,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布恬叹,位于F島的核電站,受9級特大地震影響同眯,放射性物質發(fā)生泄漏绽昼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一须蜗、第九天 我趴在偏房一處隱蔽的房頂上張望硅确。 院中可真熱鬧,春花似錦明肮、人聲如沸菱农。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽大莫。三九已至,卻和暖如春官份,著一層夾襖步出監(jiān)牢的瞬間只厘,已是汗流浹背烙丛。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留羔味,地道東北人河咽。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像赋元,于是被迫代替她去往敵國和親忘蟹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內容

  • 以下資料是在學習中總結出來的搁凸,希望對你有所幫助媚值。如果需要請轉載,謝謝护糖。 1. StringBuffer 線程安全褥芒,...
    尚學先生閱讀 724評論 0 1
  • java筆記第一天 == 和 equals ==比較的比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量...
    jmychou閱讀 1,488評論 0 3
  • Collection接口 Collection接口是所有集合的祖先類嫡良。他有兩個構造方法锰扶,一個無參構造,一個是帶Co...
    夜幕繁華閱讀 585評論 0 0
  • 3.3 集合 一方面寝受, 面向對象語言對事物的體現(xiàn)都是以對象的形式坷牛,為了方便對多個對象的操作,就要對對象進行存儲很澄。另...
    閆子揚閱讀 722評論 0 1
  • Collection ├List │├LinkedList │├ArrayList │└Vector │└Stac...
    AndyZX閱讀 870評論 0 1