import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static int solution(int[] inp) {
Map<Integer,Integer> map=new HashMap<>();
int[] nums = new int[9];
Arrays.fill(nums,0);
for (int i : inp) {
if(map.containsKey(i) != true){
map.put(i,1);
}else {
map.put(i,map.get(i) + 1);
}
}
return map.entrySet().stream()
.filter(entry -> entry.getValue() == 1)
.map(Map.Entry::getKey)
.findFirst()
.map(key -> (int) key)
.orElse(0);
}
}
1.使用hashmap可以很简单的解决这个题,键值对都为Interger类型
2.使用增强for遍历inp数组
遇到map中没有的元素,添加进map中,值设为1
遇到map中已经出现的元素,获取该元素在map中的键值对的值,对值进行加一操作,然后重新put进map中,(由于hashmap不允许重复键,所以会覆盖之前的键值对)
3.遍历结束后可以使用stream流进行最后的操作
map.entrySet().stream()
.filter(entry -> entry.getValue() == 1)
.map(Map.Entry::getKey)
.findFirst()
.map(key -> (int) key)
.orElse(0);
这段代码的执行步骤如下:
使用 map.entrySet().stream() 将 map 的 entrySet 转换为一个流。
使用 filter(entry -> entry.getValue() == 1) 过滤出值等于 1 的条目。
使用 map(Map.Entry::getKey) 提取键。
使用 findFirst() 找到第一个匹配的键。
使用 map(key -> (int) key) 将键转换为 int 类型。
使用 orElse(null) 如果没有找到匹配的键,则返回 null。