天天看點

Collections工具類與map集合

Collections是針對List系列集合操作的一個工具類。使用TreeSet集合添加自己寫的類,必須要實作Comparable接口才能夠進行添加,不然就會報ClassCastException類型轉換錯誤異常。

錯誤示例:

<a href="https://s2.51cto.com/oss/201710/26/1023f2eaec09856417d51e2bbd41dd2b.png" target="_blank"></a>

運作結果:

<a href="https://s1.51cto.com/oss/201710/26/73c8aec81b1d3fc606aa7cbfa25e98cd.png" target="_blank"></a>

正确示例:

<a href="https://s1.51cto.com/oss/201710/26/19e0af3ea5c23cfd30af4cbc070856d9.png" target="_blank"></a>

Collections工具類的一些方法:

Sort排序方法:

Sort排序要比以前使用的冒泡或者其他的入門排序法效率性能都要高很多,數組操作類Arrays也有Sort方法,實際上Collections和Arrays類的Sort方法都是同一個,隻不過Collections所耗的時間要短一些,冒泡排序法則效率十分差。

性能對比代碼示例(時間機關為毫秒):

<a href="https://s3.51cto.com/oss/201710/26/0090a3bc38dc94506084e0e9aece618e.png" target="_blank"></a>

<a href="https://s4.51cto.com/oss/201710/26/bd2cd02422c83aa755ed96269b16db73.png" target="_blank"></a>

binarySearch方法:

  和String類裡面的indexOf方法一樣,查找某個值在集合中的下标是多少,查找到了傳回出下标沒有查找到則傳回-1:

<a href="https://s5.51cto.com/oss/201710/26/7e94e1970d2e5dbd12ffa10bead45711.png" target="_blank"></a>

<a href="https://s1.51cto.com/oss/201710/26/95f10e6a7b37dc550ca98156c2c94a15.png" target="_blank"></a>

shuffle方法:

  shuffle是混排方法,能夠把集合中的元素順序打亂:

<a href="https://s5.51cto.com/oss/201710/26/ce846b1d4f3e3c12016ac37eb2f394c0.png" target="_blank"></a>

<a href="https://s1.51cto.com/oss/201710/26/28ecb1267e2cd4f714f06b29b0406093.png" target="_blank"></a>

reverse方法:

  reverse方法是逆序方法,能夠把集合中的所有元素順序反過來:

<a href="https://s3.51cto.com/oss/201710/26/c9fde188803f7d6efb0fc1d4022e4940.png" target="_blank"></a>

<a href="https://s1.51cto.com/oss/201710/26/b068a701cad6c446ff1e5ea71c7960e8.png" target="_blank"></a>

copy方法:

  此方法是用于将一個集合裡的所有元素拷貝到另一個集合中。覆寫的時候從第零個開始覆寫,根據集合的長度來覆寫到被覆寫的集合:

<a href="https://s5.51cto.com/oss/201710/26/1517a02ca6ce79ece1994a8ed337fd0e.png" target="_blank"></a>

<a href="https://s1.51cto.com/oss/201710/26/396138d18a144646d606be217cd880d0.png" target="_blank"></a>

replaceAll方法:

replaceAll方法是用于将某個集合中某個元素替換成别的元素的:

<a href="https://s1.51cto.com/oss/201710/26/6853bf3828872d117d2833482dc581ba.png" target="_blank"></a>

<a href="https://s5.51cto.com/oss/201710/26/ddeaacc19bc9d06f9e5b7ea513937116.png" target="_blank"></a>

addAll方法:

  addAll可以批量的往一個集合裡添加資料,并且這些資料可以是不同類型的:

<a href="https://s4.51cto.com/oss/201710/26/ee9bba03b81c633b13082b27b7b2c51c.png" target="_blank"></a>

<a href="https://s2.51cto.com/oss/201710/26/c994005f3927678119cb9951a54bed79.png" target="_blank"></a>

max與min方法:

  這兩個方法是用于得到某個集合中最大的元素和最小的元素,元素的大小是根據ACSII碼來計算的:

<a href="https://s5.51cto.com/oss/201710/26/365b415d41768ef5b1d527bb5090a706.png" target="_blank"></a>

<a href="https://s4.51cto.com/oss/201710/26/94eaff4d48ef9da59a2e0b6e9092d7b3.png" target="_blank"></a>

Map集合:

Map集合是一個雙列集合,也叫鍵值對集合,是java.util.Map接口,是以一鍵一值為結構的集合。Map集合必須拿着鍵來操作值,Map接口下有HashMap和Hashtable兩個集合類。前者是非線程安全的,鍵值可以寫null,後者是帶有線程安全的,鍵值不可以寫null。

Map集合方法:

  put添加方法,添加一個鍵和一個值:

<a href="https://s4.51cto.com/oss/201710/26/5ec8334df022f53baaddf1e6a4a97c6a.png" target="_blank"></a>

  containsKey方法用于查找一下有沒有這個鍵,containsValue方法用于查找一下有沒有這個值,有則傳回true沒有則會傳回false:

<a href="https://s3.51cto.com/oss/201710/26/00a77df96e0aa780ed3791017f44002d.png" target="_blank"></a>

 keySet方法用于拿出集合裡所有的鍵,因為傳回值是Set集合類型是以需要先存放在Set集合裡,然後周遊集合将鍵拿出來,使用的是Hashtable則是帶有排序的,使用HashMap則沒有排序:

<a href="https://s4.51cto.com/oss/201710/26/370da0932637d0090dc283870486c0d0.png" target="_blank"></a>

<a href="https://s1.51cto.com/oss/201710/26/68521c045d67381ad998098891ba8c19.png" target="_blank"></a>

 values方法用于拿出集合裡所有的值,需要先存放在Collection集合裡,然後周遊集合将鍵拿出來,使用的是Hashtable則是帶有排序的,使用HashMap則沒有排序:

<a href="https://s1.51cto.com/oss/201710/26/a1a28b99dcebeeaabeb958ae434236e9.png" target="_blank"></a>

<a href="https://s5.51cto.com/oss/201710/26/c3d922a4a61f35808f25a42ddf3fecb6.png" target="_blank"></a>

  entrySet方法,此方法可以拿出集合中的鍵和值,傳回出來的也是Set集合類型,需要用Set集合存放,然後利用循環使用getKey和getValue方法來獲得鍵和值:

<a href="https://s5.51cto.com/oss/201710/26/5b2915418fc270f271eef4c134f428a8.png" target="_blank"></a>

<a href="https://s3.51cto.com/oss/201710/26/747e9c6117f7705701c007ac307059a7.png" target="_blank"></a>

在for each還沒出來前隻能使用疊代器的拿值方式:

<a href="https://s5.51cto.com/oss/201710/26/3f57a4349cc9784345b9c2c46ef23540.png" target="_blank"></a>

<a href="https://s2.51cto.com/oss/201710/26/f8f957f0419702f3a12c57819a6ae94c.png" target="_blank"></a>

size得到集合的大小:

<a href="https://s3.51cto.com/oss/201710/26/9954685e7bd8c14f68b76254a6413715.png" target="_blank"></a>

remove删除某個鍵的資料:

<a href="https://s3.51cto.com/oss/201710/26/123a1829b831010736a55991498eaea1.png" target="_blank"></a>

get得到某個鍵的值:

<a href="https://s3.51cto.com/oss/201710/26/819dfc7d783b94ba8178abfd4ddf6e95.png" target="_blank"></a>

clear清除資料:

<a href="https://s5.51cto.com/oss/201710/26/073e6559e3d9115b25ce5ad56e8df24a.png" target="_blank"></a>

批量添加資料:

<a href="https://s4.51cto.com/oss/201710/26/0394a39332d233f70923dec15ae4bac2.png" target="_blank"></a>

本文轉自 ZeroOne01 51CTO部落格,原文連結:http://blog.51cto.com/zero01/1976543,如需轉載請自行聯系原作者

繼續閱讀