我一直在使用以下名为City
@ToString
@AllArgsConstructor
public class City {
Integer id;
String name;
}
并试图将其转换为被record
称为CityRecord
record CityRecord(Integer id, String name) {} // much cleaner!
但是转向这样的表示,我们的一个单元测试开始失败。测试在内部处理从 JSON 文件读取的城市列表,并映射到进一步计算城市的对象,同时将它们分组到Map
. 简化为:
List<City> cities = List.of(
new City(1, "one"),
new City(2, "two"),
new City(3, "three"),
new City(2, "two"));
Map<City, Long> cityListMap = cities.stream()
.collect(Collectors.groupingBy(Function.identity(),
Collectors.counting()));
上面的代码断言 true 包含 4 个键,每个键占其出现的 1 个。使用记录表示,结果中的键不超过 3 个Map
。是什么导致了这种情况,应该采取什么方法来解决这个问题?