按整数计数分组
Group by integer count
我有 List
个 Integer
,我正在尝试使用流 API:
计算每个数字的频率
// List looks like [5,6]
Map<String, Long> map = array.stream()
.collect(
Collectors.groupingBy(Integer::valueOf, Collectors.counting())
);
但是,编译失败并显示以下内容:
error: incompatible types: inference variable K has incompatible bounds
.collect(
^
equality constraints: String
lower bounds: Integer
我如何实现我想做的事情?
您生成的地图以 String
作为键,而不是 Integer
。
要么将其转换为字符串:
Map<String, Long> map = array.stream()
.collect(
Collectors.groupingBy(Integer::toString, Collectors.counting())
);
或使用 Integer
作为键:
Map<Integer, Long> map = array.stream()
.collect(
Collectors.groupingBy(Function.identity(), Collectors.counting())
);
问题在于您的地图类型:Map 不匹配 Map
Map<String, Long> map = array.stream()
.collect(
Collectors.groupingBy(Integer::valueOf, Collectors.counting())
);
至
Map<Integer, Long> map = array.stream()
.collect(
Collectors.groupingBy(Integer::valueOf, Collectors.counting())
);
public static void main(String[] args)
{
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(1);
list.add(2);
list.add(2);
list.add(3);
list.add(4);
Map<Integer, Long> result = list.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println(result);
}
结果是:{1=2, 2=2, 3=1, 4=1}
我认为问题在于 Map 被声明为
我有 List
个 Integer
,我正在尝试使用流 API:
// List looks like [5,6]
Map<String, Long> map = array.stream()
.collect(
Collectors.groupingBy(Integer::valueOf, Collectors.counting())
);
但是,编译失败并显示以下内容:
error: incompatible types: inference variable K has incompatible bounds
.collect(
^
equality constraints: String
lower bounds: Integer
我如何实现我想做的事情?
您生成的地图以 String
作为键,而不是 Integer
。
要么将其转换为字符串:
Map<String, Long> map = array.stream()
.collect(
Collectors.groupingBy(Integer::toString, Collectors.counting())
);
或使用 Integer
作为键:
Map<Integer, Long> map = array.stream()
.collect(
Collectors.groupingBy(Function.identity(), Collectors.counting())
);
问题在于您的地图类型:Map
Map<String, Long> map = array.stream()
.collect(
Collectors.groupingBy(Integer::valueOf, Collectors.counting())
);
至
Map<Integer, Long> map = array.stream()
.collect(
Collectors.groupingBy(Integer::valueOf, Collectors.counting())
);
public static void main(String[] args)
{
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(1);
list.add(2);
list.add(2);
list.add(3);
list.add(4);
Map<Integer, Long> result = list.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println(result);
}
结果是:{1=2, 2=2, 3=1, 4=1}
我认为问题在于 Map 被声明为