gpt4 book ai didi

java - 从 HashMap 获取匹配的对象类型

转载 作者:行者123 更新时间:2023-12-03 22:54:17 25 4
gpt4 key购买 nike

首先,我想说我是编程新手。我在同一个 HashMap 中存储了一些父类(super class)的“扩展”。(例如,XY 和 XZ 扩展了 X——我将 X、XY 和 XZ 都存储在同一个 HashMap 中)。我决定这样做是为了方便——通常每次我做某事时,我都需要扩展“X”的所有类——在这个例子中是“XY”和“XZ”。当我想检查单个值是否是指定类型对象的实例时也没有问题 - 我只是使用“instanceof”公式。假设我想检查键“key”的对象是否是“XY”的实例:

X objectoftypeX = hashmap.get(key)
if(objectoftypeX instanceof XY){
//do stuff
}

但是我的问题来了:如何只迭代这个 HashMap 中的 XY?如果不单独检查每个对象,这可能吗?这样做有意义吗?希望你能理解我的问题。

最佳答案

map 是相当简单的结构,可以优化一种访问形式(按键查找)。如果您希望能够快速找到特定类型的项目,那么您需要使用不同的结构。

例如,您可以选择制作多张 map ,或制作嵌套 map :

// Nested map, with the top level map indexing by Type (can be a String)
// and the maps inside it indexing by a String key.
Map<Type, Map<String, Object>> map = ...;

如果您不介意单独检查每个条目的开销,您可以使用流轻松获取所需的所有元素:

List<XY> list = hashmap.values().stream()
.filter(v -> v instanceof XY) // check type
.map(v -> (XY) v) // do cast
.collect(Collectors.toList()); // collect to list

关于java - 从 HashMap 获取匹配的对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42057246/

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