我有这个列表:
List<Alarm> localNotifications;
在其中,我有一堆具有一些属性的警报
对象,其中之一是以毫秒为单位的时间戳。
如何从列表中删除具有相同时间的警报
对象,以便仅保留唯一的时间戳?
PS:如果两个报警具有相同的时间戳
,但属性不同,那么任何一个都可以,所以我不在乎列表中会保留哪一个。
private class Alarm {
long timestamp;
String title;
String body;
}
最简单的方法可能是在警报中实现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));
}
}
以下是使用8个流Java解决方案:
localNotifications.stream()
.distinct()
.collect(Collectors.toList());
distinct方法使用对象。等于(对象)要比较的方法。
编辑:流不包括在Android的JDK中。有一些库支持流,但是非常粗糙。如果你感兴趣的话,去看看兰博达。
您需要首先通过地图来检测碰撞。
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像一个新人一样对待我,因为我真的是。