2012-12-04 30 views
0

如果我有列表如下聲明:存儲一個列表,另一個列表

List< Integer> b = new ArrayList< Integer>(); 

List< HashSet < Integer>> c = new ArrayList< HashSet< Integer>>(); 

我不知道我怎麼會能夠添加bc

我試過c.add(b); 但這不起作用。

感謝您的幫助!

+0

都沒有。 'c'包含(很多)整數的HashSets,'b'只是整數 – jlordo

+0

它們是不同的類型,這是不可能的。編譯器抱怨。泛型是爲了確保編譯時兼容性。 – kosa

+0

在這種情況下,將b添加到c是什麼意思?您是否想爲c設置一個HashSet <列表>?實際上,c是整數集合的列表,所以您可以添加的整數集合是整數集合,而不是整數列表。 – user295691

回答

1

你不能添加整數HashSet爲整數的列表。它們是兩種不同的數據類型。如果你將有一個整數而不是整數列表的HashSet,那麼你就可以將它們添加到你的列表中。

這樣的:

HashSet< Integer> b = new HashSet< Integer>(); 
List< HashSet < Integer>> c = new ArrayList< HashSet< Integer>>(); 
c.add(b); 
1

您已經聲明c(特別是「散集」),而不是名單列表的列表;所以添加一個列表是沒有意義的。如果你想c是的名單列表,你可以寫:

List<List<Integer>> c = new ArrayList<List<Integer>>(); 

c.add(b); 
1

您使用泛型和界定b將是Integers列表,並c將是包含IntegersHashSet個列表,這樣不行,你不能添加bc

1

肯定的,因爲整數首先列出整數 的hashsets的第二個名單有ywo變種,

  • 添加從第一列表中的所有值secod列表的第一個值一樣,

HashSet<Integer> hs = new HashSet(); 
hs.addAll(b); 
c.add(hs); 
  • 從第一列表中的每個值創建的HashSet的新實例,並把一個來自第一個列表的值,對於此解決方案使用循環第一個列表
for (Integer value: b){ 
    c.add(new HashSet<Integer>(){{add(value);}};); 

} 
1

您可以先創建一個HashSet並設置從b它元素,然後HashSet中添加c如下:

List< Integer> b = new ArrayList< Integer>(); 
    List< HashSet < Integer>> c = new ArrayList< HashSet< Integer>>(); 
    HashSet < Integer> b1= new HashSet<Integer>(); 
    b1.addAll(b); 
    c.add(b1);