List<String> keyList = new ArrayList<String>();
keyList.add("2015GeneralAndroid");
keyList.add("2016GeneralAndroid");
keyList.add("2015AdminAndroid");
keyList.add("2015AdminAndroid");
keyList.add("2016AdminAndroid");
keyList.add("2016AdminIOS"};
当我传递参数作为GeneralAndroid然后输出应为2时,这些输出应该返回。
我需要这个输出:
If i submit General then GeneralAndroid = 2. (it should be calulate with per count per year. so Ouput result is 2).
If i submit AdminAndroid then AdminAndroid =2.
If i submit AdminIOS then AdminIOS=1.
答案 0 :(得分:2)
您可以使用Stream
:
public long countElements(String needle) {
return keyList.stream()
.filter(s -> s.contains(needle))
.distinct() //use if you want to have distinct results, e.g. AdminAndroid=2
.count();
}
然后打电话给它:
System.out.println(countElements("AdminAndroid")); //prints '2'
答案 1 :(得分:0)
您可以在Java8中按照以下方式执行此操作
Set<String> keySet = new HashSet<>();
keySet.add("2015GeneralAndroid");
keySet.add("2016GeneralAndroid");
keySet.add("2015AdminAndroid");
keySet.add("2015AdminAndroid");
keySet.add("2016AdminAndroid");
keySet.add("2016AdminIOS");
String input = "GeneralAndroid";
Long count = keySet.stream().filter(e -> e.contains(input)).count();
请注意,我使用Set
来避免重复
答案 2 :(得分:0)
这个答案有点推测,但假设你的每个字符串前面有四位数年份,而重复意味着字符串的剩余部分(减去年份)与另一个字符串匹配,那么你可以尝试这个逻辑:
首先将所有内容添加到集合中:
Set<String> set = new HashSet<>();
set.add("2015GeneralAndroid");
set.add("2016GeneralAndroid");
set.add("2015AdminAndroid");
set.add("2015AdminAndroid");
set.add("2016AdminAndroid");
set.add("2016AdminIOS");
然后创建一个实际计算内容的地图:
Map<String, Integer> map = new HashMap<>();
for (String str : set) {
String key = str.substring(4);
Integer cnt = map.get(key);
int val = (cnt == null) ? 1 : cnt.intValue()+1;
map.put(key, val)
}
最后迭代地图以获得结果:
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + "/" + entry.getValue());
}
答案 3 :(得分:-1)
我没有看到你使用HashMaps。另外,为避免重复,您可以使用Sets。
您可以将值保留在HashMap中,并使用以下内容获取每个值的计数:
int count = Collections.frequency(new ArrayList<String>(hashmapObject.values()), "2015GeneralAndroid");
答案 4 :(得分:-1)
你需要做这样的事情:
HashMap<String, ArrayList<Item>> hMap = new LinkedHashMap<String, ArrayList<Item>>();
int hashSize;
/*
Some Operations
*/
hashSize = hMap.size(); // This will give the total no. of items in HashMap