获取Java中的子列表

时间:2011-12-26 12:09:51

标签: java list sublist

在Java中,我想从列表中获取subList。我不能使用java的subList,因为我想要基于列表中的一些valus的子列表。

我有DTO对象列表。 DTO就像

MyClass myClass;
int hit;

MyClass就像

String webName;
...

我想获得具有相同webName的子列表(我需要添加webName的总命中数并删除具有相同webName的重复DTO对象)

2 个答案:

答案 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