当前位置: 首页 > 面试题库 >

如何删除列表中的重复对象 没有等于/哈希码?

萧嘉茂
2023-03-14
问题内容

我必须删除列表中的重复对象。这是来自对象Blog的列表,如下所示:

public class Blog {
    private String title;
    private String author;
    private String url;
    private String description;
    ...
}

复制的对象是标题,作者,URL和描述与其他对象相同的对象。

而且我无法更改对象。我不能在上面放新方法。

我该怎么做呢?


问题答案:

如果您不能编辑类的源代码(为什么不这样做),则需要遍历列表并根据提到的四个条件(“标题,作者,URL和描述”)比较每个项目。

为了以一种高效的方式做到这一点,我将创建一个新类,类似于BlogKey包含这四个元素并
正确实现equals()and的类hashCode()。然后,您可以遍历原始列表,BlogKey为每个列表构造一个,然后添加到HashMap

Map<BlogKey, Blog> map = new HashMap<BlogKey, Blog>();
for (Blog blog : blogs) {
     BlogKey key = createKey(blog);
     if (!map.containsKey(key)) {
          map.put(key, blog);
     }
}
Collection<Blog> uniqueBlogs = map.values();

但是,最简单的方法是只编辑的原始源代码,Blog以便正确地实现equals()hashCode()



 类似资料:
  • 我正在使用hibernate作为对象类型从数据库获取数据。现在我的类不(也不是它的父类)重写equals方法。因此,如果我将所有object类型插入到一个hashset中,它不应该删除重复项,但它正在删除重复项。我的问题是它如何能够识别重复项?

  • 我有两个对象列表,它们在两个列表中都有重复名称。我需要从清单2中删除清单1中的所有重复值。 下面是一个场景,类有名称变量,用这个变量需要检查清单1中的重复值并需要删除。 //这是具有3个对象的第一个列表 清单1大小为1 请建议我在Java8与流。

  • 我的数据如下所示: 其中,foo\u list是一个名为Bar的模型中的字段。请注意,阵列中的第一个和第二个对象是完全重复的。 除了切换到PostgresSQL这一显而易见的解决方案之外,我还可以运行什么MongoDB查询来删除foo\u列表中的重复条目? 类似的答案并不能完全解决这个问题: https://stackoverflow.com/a/16907596/432 https://stac

  • 问题内容: 我想从列表列表中删除所有重复列表。 所以我有一个这样的清单清单。 我希望有: 我不知道该怎么办。 谢谢 问题答案: 您可以使用一组: 或者,如果您更喜欢列表推导/生成器: 最后,如果顺序很重要,则可以始终对b进行排序:

  • 问题内容: 我有一个字典列表,其中特定值重复多次,我想删除重复的值。 我的清单: 删除重复值的功能: 当我调用此函数时,我得到了。 当我尝试遍历生成器时,我得到 有没有办法删除重复的值或遍历生成器 问题答案: 您可以通过字典理解轻松地删除重复键,因为字典不允许重复键,如下所示- 输出-

  • 问题内容: 我创建了许多对象,然后将它们存储在列表中。但是我想在一段时间后删除它们,因为我创建了一个新闻,并且不希望我的内存过高(就我而言,如果不删除它,它会跳到20 gigs的内存)。 这里有一些代码来说明我要做什么: A和B是我的对象。C是这两个对象的列表。我正在尝试使用C中的for循环将其删除:一次是使用DEL,另一次是使用一个函数。它似乎不起作用,因为打印继续显示对象。 我需要这个,因为我