您好,登錄后才能下訂單哦!
本篇內容主要講解“java中使用集合類需要注意哪些細節”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“java中使用集合類需要注意哪些細節”吧!
1、迭代器:
迭代器的next方法是自動向下取元素,要避免出現NoSuchElementException。
也就是在迭代循環中調用一次next方法一次就要hasNext判斷一次,比如語句。
sop(it.next()+"..."+it.next())會發生上述異常。迭代器的next方法返回值類型是Object,所以要記得類型轉換,應用泛型后就不用強轉。
2、List集合:
List集合里面的元素因為是帶角標,所以List集合里面的元素都是有序的,另外List集合可以包含重復元素,也可以包含null。
List集合有迭代器Iterator,還有一個特有迭代器列表ListIterator。
List集合中判斷元素是否相同都是用equals方法,無論contains、remove都依賴equals方法,比如往ArrayList集合里面存放學生,同名同年齡視為同一個人,此時就需要在學生類復寫Object類里面的equals方法(非常重要!!!要注意!!)。
3、Set集合:
Set接口里面存放的是元素是無序的,不可以有重復元素,可以包含null。
Set集合只有一種取出方式,就是迭代器Iterator。
Set集合功能和Collection是一致的,沒有特殊方法。
3.1、HashSet:
集合里面存放的元素是無序的,唯一的。
底層數據結構是哈希表,哈希表結構的數據都是無序的,哈希表結構的操作效率都高效。
線程不同步。
保證元素唯一性的原理是:通過復寫hashCode和equals方法。
如果兩元素的hashCode值相同,則繼續判斷兩元素equals是否為真。
如果兩元素的hashCode值不同,則不會調用equals方法。
當我們往HashSet集合存放自定義的元素時(比如學生對象),通常都要復寫hashCode和equals方法,而且hashCode和equals方法不通過我們調用,HashSet集合底層內部自己調用,自己拿元素去比較。
3.2、TreeSet
TreeSet集合可以對存放的元素進行排序,彌補了Set集合元素無序的缺點,且元素是唯一的。
底層數據結構是二叉樹,二叉樹結構都是有序的。
線程不同步。
TreeSet集合要求往集合里存放的元素自身具備比較性,否則會報錯。
TreeSet集合保證元素唯一性的依據是:通過compareTo或者compare方法中的來保證元素的唯一性。TreeSet排序的第一種方式:讓元素自身具備比較性,
定義元素類實現Compareble接口,覆蓋compare方法,此方式是元素的自然順序。
TreeSet排序的第二種方式:讓集合具備比較性當元素自身不具備比較性或者具備的比較性不是我們所需要的比較性時,此時就需要讓集合具備自定義的比較性。
4、Map集合:
4.1、Hashtable
底層是哈希表結構線程安全的,并且鍵和值不能為null。
4.2、HashMap
底層是哈希表結構線程不安全的,鍵和值可以為null。
4.3、LinkedHashMap
底層是鏈表和哈希表線程不安全
4.4、TreeMap
底層是二叉樹線程不安全的
到此,相信大家對“java中使用集合類需要注意哪些細節”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。