0

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

我有 DTO 对象列表。DTO 就像

MyClass myClass;
int hit;

MyClass 就像

String webName;
...

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

4

2 回答 2

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());
于 2011-12-26T12:19:33.207 回答
0

怎么样 ?

保存具有相同名称的 DTO 列表

Map<String, List<YourDTO> > mapNameToDtos

甚至更好

仅保留具有相同名称的计数

Map<String, Integer > mapNameToCount
于 2011-12-26T12:12:42.487 回答