Treeset集合中不能存放HashSet型別的集合嗎?如果不能,為什么不能呢?
uj5u.com熱心網友回復:
treeset不能放入null值, hashset可以放入一個null值。如果hashset有null ,treeset就存放不了
uj5u.com熱心網友回復:
不太理解你的問題是treeset存放hashset的元素,還是treeset存放hashset物件?
1 如果是指前者,處理LS說的treeset的元素不能為null外,treeset的元素還要實作Comparable介面,因為內部會呼叫Comparable的介面方法來排序(所以null元素呼叫介面方法會出空指標例外,非null元素如果沒實作Comparable介面也會因為找不到介面方法而出錯)
2 如果是指后者,因為hashset本身沒有實作Comparable介面,所以不能存盤
uj5u.com熱心網友回復:
就是我創建了三個集合 :
一個hashset型別的集合a里面放String型別的元素
一個treeset型別的集合b里面放int型別的元素
一個arraylist型別的集合c里面放自定義型別的物件
然后我又創建了一個treeset型別的集合D,里面放置上面三個集合,結果運行時顯示添加集合a到D中的陳述句出錯了,這是為什么呢?
uj5u.com熱心網友回復:
不是說了嗎,treeset只能添加實作了Comparable介面的物件。hashset沒有實作Comparable介面,所以不能存入treesetuj5u.com熱心網友回復:
如果是非空hashset可以自己手動建立方法存入treeset,想直接存是不可能的。
uj5u.com熱心網友回復:
你用泛型宣告的集合D嗎?HasSet<String> collectionA = new HashSet<>();
......
TreeSet<Integer> collectionB = new TreeSet<>();
......
ArrayList<Object> collectionC = new ArrayList<>();
......
TreeSet<Collection> collectionD = new TreeSet<>();
collectionD.add(collectionA);
collectionD.add(collectionB);
collectionD.add(collectionC);
uj5u.com熱心網友回復:
是不是集合D的泛型寫錯了?要統一使用Collection作為泛型,因為,A,B,C的公共介面是Collection。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/60332.html
標籤:Java SE
上一篇:關于RK演算法遇到的問題
