我有一个字符串看起来像
{APP,LEE,APP,KCC,KCC,LEE,APP}.
我想将APP,LEE,KCC等相同的值分别推送到不同的arraylists(任何集合)。
例如:
这样我就可以确定有多少不同的群体,并确定其价值。
提前致谢。
答案 0 :(得分:2)
您可以改为从ArrayList创建一个Set(这将删除重复项),然后获取该组的大小,该组的每个项目将是一个组
Set<String> groups = new HashSet<String>(list);
groups.size(); //Number of groups
for(String group : groups) {
System.out.println(group); //Print each value
}
答案 1 :(得分:1)
使用Map<String, List<String>>
。每个值都包含一个元素列表(如果需要,可以使用Integer计算)
添加元素时:
List<String> elemList = myMap.get(key);
if (elemList == null){
elemList = new ArrayList<String>;
myMap.put(key, elemList);
}
elemList.add(key);
虽然使用计数器更好......
Map<String, Integer> myMap = new HashMap<>();
...
Integer count = myMap.get(key);
if (count == null){
myMap.put(key, 1);
} else {
myMap.put(key, count + 1);
}
答案 2 :(得分:1)
最简单的方法是为每个列表创建一个地图。然后,如果某个键没有退出,请创建它,然后追加。
这样的事情:
Map<String, List<String>> result = new HashMap<String, List<String>>();
String[] values = source.substring(1, source.length() - 1).split(",");
for (String value : values) {
List<String> existingMatches = result.get(value);
if (existingMatches == null) {
existingMatches = new ArrayList<String>();
result.put(value, existingMatches);
}
existingMatches.add(value);
}
如果您只需要计算不同的值,请使用AtomicInteger替换List,然后递增该值,然后最终得到一个不同字符串的映射,以及它出现次数的计数。 / p>