当前位置: 首页 > 知识库问答 >
问题:

如何在Java 7[duplicate]中从列表中删除单个属性相等的对象

鲜于华容
2023-03-14

我有这个列表:

List<Alarm> localNotifications;

在其中,我有一堆具有一些属性的警报对象,其中之一是以毫秒为单位的时间戳。

如何从列表中删除具有相同时间的警报对象,以便仅保留唯一的时间戳?

PS:如果两个报警具有相同的时间戳,但属性不同,那么任何一个都可以,所以我不在乎列表中会保留哪一个。

private class Alarm {
    long timestamp;
    String title;
    String body;
}

共有3个答案

寿飞飙
2023-03-14

最简单的方法可能是在警报中实现hashCode()和equals()方法,它们只需从您的List中创建一个新Set。

新设置(本地通知);

只有独特的价值观会保留下来。

public class Alarm {
    long timestamp;
    String title;
    String body;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Alarm alarm = (Alarm) o;

        return timestamp == alarm.timestamp;

    }

    @Override
    public int hashCode() {
        return (int) (timestamp ^ (timestamp >>> 32));
    }
}
洪经义
2023-03-14

以下是使用8个流Java解决方案

localNotifications.stream()
  .distinct()
  .collect(Collectors.toList());

distinct方法使用对象。等于(对象)要比较的方法。

编辑:流不包括在Android的JDK中。有一些库支持流,但是非常粗糙。如果你感兴趣的话,去看看兰博达。

孟建木
2023-03-14

您需要首先通过地图来检测碰撞。

Map<Long, Alarm> map = new HashMap<>();
for (Alarm alarm : alarms) {
   map.put(alarm.timestamp, alarm);
}
return map.values();

或者在java8中

return alarms.stream()
   .collect(Collectors.toMap(Alarm::timestamp, Function.identity()))
   .values();
 类似资料:
  • 我正试图从基于某些属性的对象列表中删除重复项。 我们能用一种简单的方法使用Java8吗 我们是否可以根据员工的属性删除其中的重复项。我看到过从String的arraylist中删除重复字符串的帖子。

  • 问题内容: 说我创建一个对象,如下所示: 删除该属性以使其最终成为new 的最佳方法是什么? 问题答案: 像这样: 演示版

  • 我如何删除Linkedlist中的对象。我有一个类帐户,里面有学生ID和学生名称。我输入列表中的对象,但是当我试图删除时,我不知道如何做。因为每次你从列表中间删除一个元素,它就会变得有组织,这意味着索引会改变。所以我如何获得学生ID属性并删除LinkedList中的对象。 样本: 我想让用户插入他想要删除的studentId,我可以做一个搜索和删除该对象的代码。 每次我从中间删除一个对象,它就会改

  • 假设我有一个雇员对象列表,每个雇员类都有雇员姓名、雇员地址、工资等属性。现在我必须删除名称为“John”和Salary的雇员对象 列表empList=new ArrayList 根据我的理解,若要解雇具有上述情况的员工,我应使用以下代码: 因此,基本上上述代码将从列表中删除所需的Employee对象。如果我的理解正确,请告诉我。 除此之外,请澄清以下几点:1.当我们有数百万条记录时,我们将如何解决

  • 从 JSON 对象删除除了指定属性之外的任何其他属性。 使用 Object.keys() 方法遍历给定的 JSON 对象并删除给定数组中不包含的 keys 。 如果你传递一个特殊的键 childIndicator ,它也会深入地将这个函数应用到内部对象中。 const cleanObj = (obj, keysToKeep = [], childIndicator) => { Object.k

  • 我有以下示例数据作为Python中的listobject。 我如何从这个列表中删除tour_url描述;或者我怎么能只保留名称和leagueid密钥。我试过很多种解决办法,但似乎都不起作用。 第二个问题:我如何过滤这个列表?与MySQL一样: 请对python像一个新人一样对待我,因为我真的是。