2017-04-17 50 views
1

我有ListIntegers,但我想採取List並將其轉換爲HashSet在JAVA中將類型Integer的鏈接列表轉換爲類型字符串的集合

例如我的名單如下:

1234 
5678 
1234 
7627 
4328 

但我想採取list和轉換整數的字符串到HashSet所以它不包括重複。什麼是完成這個最好的方法?

list被定義爲

static List<Integer> list; 

而且我HashSet被定義爲

static HashSet<String> set = new HashSet<String>(list); 

我的錯誤是,我不能轉換從int到字符串,以便我能做些什麼來解決這個問題?

+1

如果你想要做的是消除重複,這有什麼錯'HashSet的'?你真的需要把它們存儲爲字符串嗎? – ajb

+0

這是一串整數 –

+0

「一串整數」?我以爲你有一個整數列表。你在談論什麼是「整數串」?什麼是「整數串」與是否將每個_single_整數轉換爲一個字符串有關? – ajb

回答

0

假設你使用一個ArrayList的名單<的實例形式>:

for (Integer value : list) { 
     set.add(value.toString()); 
    } 

這將通過遍歷您的列出並取每個整數,將其轉換爲一個字符串,並將該值添加到您的HashSet。

+0

我最終做了這樣的事情。謝謝! –

+0

沒問題,如果這是你使用的答案隨意標記它的答案。 – ajthyng

1

一種方法是使用流:

Set<String> set = list.stream() 
    .map(Object::toString) 
    .collect(Collectors.toSet()); 

首先,你流的列表。然後,將每個元素轉換爲字符串,最後將所有元素收集到一個集合中。默認情況下,Collectors.toSet()創建一個HashSet,雖然這不是規範所保證的。

如果你想保證HashSet,你可以使用Collectors.toCollection(HashSet::new)

Set<String> set = list.stream() 
    .map(Object::toString) 
    .collect(Collectors.toCollection(HashSet::new)); 
1

使用Java 8流:

set = list.stream().map(e -> e.toString()).collect(Collectors.toCollection(HashSet::new)); 

DEMO

使用或不使用流

for(Integer i : list) set.add(Integer.toString(i));