2016-04-05 4 views
0

私は重複の多くを持っているStringのリストを持っています。 をマージして別のリストに数える必要があります。 私はMap、またはsmtを使うことができますが、sortのリストが必要です。私はMapを並べ替えることができます。このような 何か:ストリームとリストの中のマージリスト

for (int i = 0; i < word.size(); i++) 
     {     
      if (word.get(i).equals(itself)) 
      { 
       //if word in list, add 1 to counter     
       int index = (int)word_used.get(i)+1; 
       word_used.set(i, index);      
       wordscount++; 
       return 0;      
      } 
else 
{ 
       if(i == word.size() - 1)//No matches 
       { 
        //add to list 
        write_to_voc(s);      
        return 1; 
       } 
      } 
+1

を有するものです'キーでソートされます。または、リストを最初にソートし、 'LinkedHashMap'を使用して挿入順序を保持することもできます。または、マップを構築し、そこからエントリまたはキーを抽出してリストにソートすることができます。非常に多くの方法があります。 – Thomas

+0

https://docs.oracle.com/javase/7/docs/api/java/util/SortedMap.htmlもあります。 非常に多くの方法... –

答えて

0

例:

List<String> list = Arrays.asList("cc", "aaa", "bbb", "aaa", "cc", "cc"); 
Map<String, Integer> map = list.stream().collect(
     Collectors.toMap(Function.identity(), s -> 1, (i, j) -> i + j, TreeMap::new)); 
System.out.println(map); 

出力:以下

{aaa=2, bbb=1, cc=3} 
0

あなたは `のTreeMapを使用することができますColletions.frequency

List<String> word = new ArrayList<String>(); 
Map<String, Integer> sortedMap = new TreeMap<String, Integer>(); 

for (int i = 0; i < word.size(); i++){ 
    int occcurence = Collections.frequency(word, word.get(i)); 
    if(!sortedMap.containsKey(word.get(i))) 
     sortedMap.put(word.get(i), occcurence); 
} 
System.out.println(sortedMap); 
関連する問題