-1

我有一个包含未排序字符串条目的数组,我想将它“转换”为一个二维数组,其中包含旧数组中的每个条目以及该条目的丰度(每个字符串出现的计数)。

我不知道如何在 Java 中实现这一点,我不确定这是否是一种好方法,因为该数组有 90k+ 个条目。

4

3 回答 3

2

我建议使用地图:

 Map<String, Integer> counted = new HashMap<String, Integer>();

 for (String s : theOriginalArray) {
      Integer count = counted.get(s);
      if (count == null) {
           counted.put(s, 1);
      } else {
           counted.put(s, count + 1);
      }
 }
于 2013-07-30T13:39:10.503 回答
1

像这样的东西?

我是用 List 和 Map 做的,但是你可以轻松地将数组转换为列表,而且使用起来更容易。

public static Map<String, Integer> getUniqueStrings(List<String> rawData) {
    Map<String, Integer> uniques = new HashMap<String, Integer>();

    for(String s : rawData) {
        if(uniques.containsKey(s)) {
            uniques.put(s, uniques.get(s) + 1);
        } else {
            uniques.put(s, 1);
        }
    }

    return uniques;
}

当然,对于 90K 条目,这将需要一些时间。

于 2013-07-30T13:39:37.990 回答
1

这是学生的问题吗?如果没有,您可以使用像 Google Guava 提供的罐头解决方案。

import com.google.common.collect.HashMultiSet;
import com.google.common.collect.MultiSet;
// ...
String[] stringArray = ...;
MultiSet<String> bag = HashMultiSet.create();
Collections.addAll(bag, stringArray);
int sos = bag.count("Stack Overflow");
于 2013-07-30T13:43:45.740 回答