gpt4 book ai didi

java - 在Java中按值过滤Map?

转载 作者:太空宇宙 更新时间:2023-11-04 10:28:39 25 4
gpt4 key购买 nike

我有一个 map ,其值为 GregorianCalendar/String,键为 Reminder/Contact:

private final Map<Object, Object> elements = new HashMap<>();

另一个列表:

List<Reminder> result = new ArrayList<Reminder>

我想过滤 map 并按提醒主题创建列表。

public class Reminder {
String name;

String theme;
...
}

我做了一个这样的方法,但它不起作用。方法 getTheme() 未针对类型 Object 定义。

public List<Reminder> filterReminderByTheme(String theme) {
result = elements.values()
.stream()
.filter(reminder -> theme.equals(reminder.getValue().getTheme()))
.collect(Collectors.toList());
return result;
}

有什么想法吗?

最佳答案

在测试它的主题之前,您应该首先确保该值是一个Reminder。您使用的引用是一个 Object 引用,您将无法使用 Reminder 方法,即使这些方法是在底层对象中定义的。

您首先需要转换它。要转换它,您必须首先确保它确实是目标类的实例

public List<Reminder> filterReminderByTheme(String theme) {
result = elements.values()
.stream()
.filter(value -> value instanceof Reminder
&& theme.equals(((Reminder)value).getTheme()))
.collect(Collectors.toList());
return result;
}

关于java - 在Java中按值过滤Map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50308020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com