2017-10-10 125 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

相关问题