在 Java 中,我想从列表中获取 subList。我不能使用 java 的子列表,因为我想要基于列表中的某些值的子列表。
我有 DTO 对象列表。DTO 就像
MyClass myClass;
int hit;
MyClass 就像
String webName;
...
我想获得具有相同 webName 的子列表(我需要添加 webName 的总点击量并删除具有相同 webName 的重复 DTO 对象)
从你的问题来看,你现在拥有的是
List<MyDTO> dtos;
你想去
List<List<MyDTO>> sublists;
因此,只需遍历您的 dto,在地图中找到正确的条目,然后将命中添加到容器中。该地图将确保每个网站名称只有一个条目。
Map<String, List<MyDTO>> hitmap = new HashMap<String, List<MyDTO>>();
for (MyDTO dto: dtos){
String webname = dto.getMyClass().getWebName();
List<MyDTO> list = hitmap.get(webname);
if (list==null){
list = new ArrayList<MyDTO>();
hitmap.put(webname, list);
}
list.add(dto);
}
然后,如果您真的只想要一堆子列表,只需从值中获取它
List<List<MyDTO>> sublists = new ArrayList<List<MyDTO>>(hitmap.values());
怎么样 ?
保存具有相同名称的 DTO 列表
Map<String, List<YourDTO> > mapNameToDtos
甚至更好
仅保留具有相同名称的计数
Map<String, Integer > mapNameToCount