在Java中,我想从列表中获取subList。我不能使用java的subList,因为我想要基于列表中的一些valus的子列表。
我有DTO对象列表。 DTO就像
MyClass myClass;
int hit;
MyClass就像
String webName;
...
我想获得具有相同webName的子列表(我需要添加webName的总命中数并删除具有相同webName的重复DTO对象)
答案 0 :(得分:1)
从你的问题来看,你现在拥有的是
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());
答案 1 :(得分:0)
怎么样?
保存具有相同名称的DTO列表
Map<String, List<YourDTO> > mapNameToDtos
甚至更好
只保留具有相同名称的计数
Map<String, Integer > mapNameToCount