您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java集合方法怎么用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java集合方法怎么用”吧!
概述:
面向對象語言對事物的體現都是以對象的形式,為了方便多個對象的操作,就要對對象進行存儲。另一方面,使用Array存儲對象方面具有一些弊端,而Java集合就像一種容器,可以動態地多個對象的引用放入容器中。
Java集合類可以用于存儲數量不等的對個對象,還可用于保存具有映射關系的關聯數組。
使用:
存儲對象可以考慮:①數組 ②集合
數組存儲對象的特點:Student[] stu=new Student[20]; stu[0]=new Student(); ...
使用數組的弊端:一旦創建,其長度不可變。
真實的數組存放的對象的個數是不可知的。
集合:
List:元素有序、可以重復的集合 - - - - " 動態“ 數組
①ArrayList(主要的實現類)(底層是用數組實現的)
②LinkedList(對于頻繁的插入、刪除操作建議使用這個)(底層用鏈表實現的)
③Vector(古老的實現類、線程安全的)
Set:存儲的元素是無序的,不可重復的!
無序性:無序性!=隨機性。真正的無序性,指的是元素在底層存儲的位置是無序的。
不可重復性:當向Set中添加進相同的元素的時候,后面的這個不能添加進去。
說明:要求添加進Set中的元素所在的類,一定要重寫equals()和hashCode()方法。進而保證Set中元素的不可重復性!
Set中的元素是如何存儲的呢?使用了哈希算法。
當向Set中添加對象時,首先調用此對象所在類的hashCode()方法,計算此對象的哈希值,此哈希值決定了此對象在Set中的存儲位置。若此位置之前沒有對象存儲,則這個對象直接存儲到此位置。若此位置已有對象存儲,再通過equals()方法比較這兩個對象是否相同,如果相同,后一個對象就不能再添加進來。
萬一返回false呢?都存儲(不建議如此)
>要求hashCode()方法要與equals()方法一致。
①HashSet(主要實現類)
②LinkedHashSet
使用鏈表維護了一個添加集合中的順序。導致當我們遍歷LinkedHashSet集合元素時,是按照添加進去的順序遍歷的。
LinkedHashSet插入性能略低于 HashSet,但在迭代訪問 Set 里的全部元素時有很好的性能。
LinkedHashSet 不允許集合元素重復。
③TreeSet
向TreeSet中添加的元素,必須是同一個類的
TreeSet 不允許集合元素重復。
可以按照添加進集合中的元素的指定的順序遍歷。像String,包裝類等默認按照從小到大的順序遍歷。
當Person類沒有實現Comparable接口時,當向TreeSet中添加Person對象時,報ClassCaseException。
當向TrreSet中添加自定義類的對象時,有兩種排序方法:
①自然排序:要求自定義類實現java.lang.Comparable接口并重寫其compareTo(Object obj)的抽象方法,在此方法中,指明安裝自定義類的哪個屬性進行排序。
②定制排序: comparetTo()與hashCode()以及equal s()三者保持一致! 排序方式 見以下步驟
①創建一個實現了Comparator接口的類對象
>①向TrreSet中添加Customer類的對象,在此compare()方法中,指明是按照Customer的那個屬性排序。
>②將此對象作為形參傳遞給TreeSet的構造器中。
>③向TrreSet中添加Comparator接口中的compare方法中涉及的類的對象。
向TreeSet中添加元素時,首先要按照compareTo()方法進行比較,一旦返回0,雖然僅是2個對象的此屬性值相同,但是程序會認為這兩個對象是相同的,進而后一個對象就不能添加進來
>comparetTo()與hashCode()以及equal s()三者保持一致!
Map接口:具有映射關系 " key-value對 " 的集合 - - - - 類似于高中的“ 函數 ”y=f(x) (x1,y1)(x2,y2);
①HashMap ②LinkedHashMap ③TreeMap ④Hashtable(子類:Properties)
size():返回集合中的元素(對象)的個數;
add(Object obj):向集合中添加一個元素(對象),任何類型都可以。
addAll(Collection coll):將形參coll中包含的所有元素添加到當前集合中。
isEmpty():判斷一下這個集合是否為空
clear():清空集合元素
contains(Objetc obj):判斷集合是否包含指定的obj元素。如果包含,返回true.反之返回false;
判斷的根據:根據元素所在的類的equals() 方法進行判斷
明確:如果存入集合中的元素是自定義類的對象。要求:自定義類要重寫 equals() 方法。
System.out.println(對象);可以查看集合的元素
containsAll(Collection coll):判斷當前集合中是否包含coll中所有的元素。
retainAll(Collction coll):求當前集合與coll的共有的元素,返回給當前集合
remove(Object obj):刪除集合中的obj元素。若刪除成功,返回true.反之返回false.
removeAll(Collection coll):從當前集合中刪除包含在coll中的元素。
equals(Object obj):判斷兩個集合中的所有元素是否完全相同
hashCode():hash值(暫不明白);
roArray():將集合轉化成數組。(用Object來進行接收)。
Collection coll=Arrays . asList(1,2,3):數組轉化成集合。
iterator():返回一個Iterator接口實現類的對象,進而實現集合的遍歷。
//方式一:不用 Iterator iterator=new Iterator(); System.out.println(iterator.next());//輸出一個,有幾個打印幾次。。 //方式二:不用 for(int i=0;i<coll.size();i++){ System.out.println(iterator.next()); } //方式三:使用Iterator實現集合的遍歷。 Iterator iterator=new Iterator(); while(iterator.hasNext()){ System.out.println(iterator.next()); }
//使用增強for循環實現集合的遍歷 Collection coll=new ArrayList(); coll.add(123); coll.add("ASDF123"); coll.add("BB"); coll.add("AA"); coll.add(456); for(Object i:coll){//將coll賦值給i,然后打印i. System.out.println(i); }
List中相對于Collection,新增加的方法
> void add (int index, Object ele):在指定的索引位置添加元素
boolean addAll (int index, Collection eles):在指定索引位置添加一個元素集合
Object get (int index):獲取指定索引位置的元素
Object remove (int index):刪除指定索引位置的元素
Object set (int index, Object ele):設置指定索引位置的元素值
> int indexOf (Object obj) :返回obj在集合中首次出現的位置。沒有的話。返回 -1
int lastIndexOf (Object obj):返回obj在集合中最后一次出現的位置。沒有的話。返回 -1
List subList (int fromIndex, int toIndex):返回從fromeIndex到toIndex結束的左閉右開的一個子list
List常用方法:①增(add(Object ele)) ③改(set(int index, Object ele)) ⑤長度(sizi())
②刪(remove) ④查(get(int index)) ⑥插(addAll(int index, Collection eles))
HashMap:Map的主要實現類,key是用Set來存放的,不可重復。
value是用Collection來存放的,可重復一個Key - value對。是一個Entry。所有的Entry是用Set來存放的,也是不可重復的。
向HashMap中添加元素時,會調用key所在類的equals()方法,判斷兩個key是否相同。若相同則只能添加進后添加的那個元素。
LinkedHashMap:使用鏈表維護添加進Map中的順序,故遍歷Map時,是按添加的順序遍歷的。
TreeMap:按照添加進Map中元素的Key的指定屬性進行排序。要求:key必須是同一個類的對象!
針對key:①自然排序 vs ②定制排序
Hashtable:古老的實現類,線程安全,不建議使用
properties:常用來處理屬性文件。鍵和值都為String類型的
Map與Collection并列存在。用于保存具有映射關系的數據:Key-Value
Map 中的 key 和 value 都可以是任何引用類型的數據
Map 中的 key 用Set來存放,不允許重復,即同一個 Map 對象所對應的類,須重寫hashCode()和equals()方法。
常用String類作為Map的“鍵”。
key 和 value 之間存在單向一對一關系,即通過指定的 key 總能找到唯一的、確定的 value。
添加、刪除
Object put(Object key,Object value):向Map中添加一個元素
Object remove(Object key):按照指定的Key刪除此key - value
void putAll(Map t):將一個新的對象中的所有元素添加進來
void clear():清空
元素查詢
Object get(Object key):獲取指定key的value值。若無此Key,則返回null.
boolean containsKey(Object key):判斷這個map當中是否包含指定的key的對。
boolean containsValue(Object value): 判斷是否包含value的那個對。
int size():返回集合的長度
boolean isEmpty(): 判斷元素是否為空
boolean equals(Object obj):是否equals另一個
元視圖操作:遍歷Map
Set keySet()
Collection values()
Set entrySet()
①遍歷key集
Set set=new map.keySet(); for(Object obj:set){ System.out.println(obj); }
②遍歷value集
Collection values=map.value(); Iterator i=values.iterator(); while(i.hasNext()){ System.out.println(i.next()); }
③遍歷 key - value 對。
Set set=new map.keySet(); for(Object obj:set){ System.out.println(obj+"- - ->"+map.get(obj)); }
或者 :
Set set=map.entruySet(); for(Object obj:set){ Map.Entry entry =(Map.Entry)obj; System.out.println(entry.getKey()+"- - ->"+entry.getValue()); }
操作Collection以及Map的工具類:Collections
面試題:區分Collection和Collections
排序操作:
①reverse(List):反轉 List 中元素的順序
②shuffle(List):對 List 集合元素進行隨機排序
③sort(List):根據元素的自然順序對指定 List 集合元素按升序排序
④sort(List,Comparator):根據指定的 Comparator 產生的順序對 List 集合元素進行排序
⑤swap(List,int, int):將指定 list 集合中的 i 處元素和 j 處元素進行交換
查找、替換:
①Object max(Collection):根據元素的自然順序,返回給定集合中的最大元素
②Object max(Collection,Comparator):根據 Comparator 指定的順序,返回給定集合中的最大元素
③Object min(Collection)
④Object min(Collection,Comparator)
⑤int frequency(Collection,Object):返回指定集合中指定元素的出現次數
⑥void copy(List dest,List src):將src中的內容復制到dest中
⑦boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替換 List 對象的所有舊值
感謝各位的閱讀,以上就是“Java集合方法怎么用”的內容了,經過本文的學習后,相信大家對Java集合方法怎么用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。