我有一个带有未排序字符串条目的数组,我想将它“转换”为一个2D数组,其中包含旧数组中的每个条目以及该条目的丰度(每个字符串出现次数)。
我不知道如何在Java中实现这一点,我不确定这是否是一个很好的方法,因为数组有90k +条目。
答案 0 :(得分: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);
}
}
答案 1 :(得分: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条目,需要一些时间。
答案 2 :(得分: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");