使用HashMap查找重复项



我想在String上找到重复的值。我知道还有其他解决方案可以找到,但我想使用HashMap。这是我的解决方案。!!最后一部分我缺了什么?我只想要两个重复的字母

public static void doublicatess(String str) {

HashMap <String , Integer> hashmap = new HashMap<>();
String[] array = str.split("");
for( String string : array) {
if(hashmap.get(string) == null) {
hashmap.put(string, 1);
}else {
hashmap.put(string, hashmap.get(string) + 1);
}
}

for(int i = 0 ; i < hashmap.size() ; i++) {
int target = hashmap.get(array[i]);
if(target > 1) {
System.out.print(hashmap.get(target));
}
}
}
public static void main(String[] args) {
doublicatess("alaaass");
}

输出为空,而它应该是[a,s]

使用hashmap大小进行迭代,并使用错误的计数对数组进行索引。

试试这个

for(Map.Entry<String, Integer> entry: hashmap.entrySet()) {
int target = entry.getValue();
if(target > 1) {
System.out.print(entry.getKey());
}
}

使用流,您可以以功能性/声明性的方式(可能对您更高级(编写

Arrays.stream(array)
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
.entrySet()
.stream()
.filter(entry -> entry.getValue() > 1)
.map(Map.Entry::getKey)
.forEach(System.out::println);

最新更新