2017-10-10 127 views
1

我的輸入是n個字符串。我想獲得唯一的值,以及這些字符串大小寫不敏感的發生次數。Java字符串數組最大最少出現次數

我有一個在數組中獲取輸入的想法;對它進行排序並做循環來計算出現次數。有沒有其他方法?

+0

你的輸入( n個字符串)看起來像什麼?它是一個數組,一個列表還是一張地圖?還是其他什麼? – deHaar

+3

將字符串映射到出現次數。 – Patrick

+0

它是一串字符串 – Emmanual

回答

2

您可以使用Stream API設施得到你想要的東西:

List<String> list = Arrays.asList("hello","world","Hola","Mundo","hello", "world","Hola","Mundo","mundo","Hello","Hola","mundo","Mundo"); 

Map<String, Long> ocurrences = list 
     .stream() 
     .map(String::toLowerCase) // make case insensitive 
     .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())); 

System.out.println(ocurrences); 

輸出:

{世界= 2,蒙多= 5,你好= 3,HOLA = 3}

1
public Map<String, Integer> calculateOccurences(Collection<String> collectionOfStrings) { 
     HashMap<String, Integer> map = new HashMap<String, Integer>(); 
     for (String string : collectionOfStrings) { 
      String stringAsLowerCase = string.toLowerCase(); 
      Integer integer = map.get(stringAsLowerCase); 
      if (integer == null) { //this has never been added 
       map.put(stringAsLowerCase, 1); 
      } else { 
       map.put(stringAsLowerCase, integer + 1); 
      } 
     } 
     return map; 
    } 

這將返回一個地圖,其中鍵是唯一的詞和每個值會告訴你有多少次出現了。

+1

使用'整數整數= map.getOrDefault(stringAsLowerCase,0);'然後你可以擺脫條件邏輯 – Michael

相關問題