黑马程序员_集合学习1
------- android培訓、java培訓、期待與您交流! ----------
?
在集合框架中,最頂層的是Collection,它有兩個子接口,List和Set
?
在List和Set接口下,又有很多特殊的容器。因為每一個容器對數據的存儲方式都有不同。這個存儲方式稱之為:數據結構。自身具備的特點不同。
?
作為一個集合,應該具有的方法:增刪改查
在collection中,存在這樣一些抽象方法
add(),增加一個元素
addAll(),一次增加一堆元素(實現并集)
remove 刪除一個元素
removeAll 刪除一堆元素(實現差集)A-B
retainAll 保留兩個集合中共有的元素。交集
?
在集合中存儲的都是對象的引用(地址)。
?
當我們取出元素中的集合時候,就可以使用迭代器,其實就是集合取出元素的方式
?
每個集合中有各自特定的取出方式,也就有一個特定的迭代器。取出這個類就定義在集合的內部。也就是用來取元素,在集合內部操作,這個迭代器內部類抽取了一些共性的方法,叫做Iterator接口,這個接口定義了抽象的方法,在各自不同的數據結構中,取出和判斷的方式不同,故各個數據結構實現了自己特定的迭代器對象。可以使用? 數據結構對象.iterator();得到其內部實現的迭代器。
?
Collection中
List:元素是有序的,元素可以重復。因為該集合體系有索引。可以在指定位置對元素進行操作。凡是帶角標的,都是該集合下特有的操作方式。
Set:元素是無序的,元素不可以重復。
ArrayList<String>al? = newArrayList<String>();
??????
?????? al.add("01");
?????? al.add(0,"dsf2");
??????
??????
?????? ArrayList<String> al1 = newArrayList<String>();
?????? al1.add("fds0");
?????? al1.add("dfs1");
?????? al.addAll(0,al1);
??????
?????? al.remove(0);
??????
?????? al.set(0,"nihao");
??????
?????? al.get(0);
??? ??? System.out.println(al.subList(0,2));
?????? System.out.println(al);
?
?
?
?
需求:現在要使用迭代器去集合中的元素取出,并進行一些操作。
但是,我們在使用迭代器操作集合對象的時候,再使用集合對象對元素進行操作
會出現并發(fā)操作的安全隱患。不能對同一個集合,進行多種同時操作,不能既使用集合,又使用迭代器操作同一組元素。
列表迭代器:
Remove從列表中移除由 next 或 previous 返回的最后一個元素(可選操作)。
也就是刪除next得到的那個元素,不能同時使用兩次remove。
?
List集合特有的迭代器,ListIterator是Iterator子接口。
在迭代時,不可以通過集合對象的方法操作集合中的元素。因為會發(fā)生并發(fā)修改異常。
所以在迭代時候,只能用迭代器的方法操作元素,可以iterator方法有限。
只能對元素進行判斷,取出,刪除的操作。
如果想要其他的操作,如添加,修改,就需要使用子接口。
?
該接口通過List.ListIterator()方法獲取。
?
特點:在遍歷過程中的增刪改查。。。。十分的重要
?
?
ArrayList的特點:查詢,修改速度很快,但是增加,刪除元素很慢。線程不同步
LinkedList:增刪的速度很快,查詢比較慢
Vector?:底層是數組數據結構,線程同步。
轉載于:https://www.cnblogs.com/xinyuyuanm/archive/2013/04/07/3003872.html
總結
以上是生活随笔為你收集整理的黑马程序员_集合学习1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL Server2012登录记录怎么
- 下一篇: 最快最新最详细的IT电子书