作者:alilx | 来源:互联网 | 2023-02-12 19:32
首先,我想说我对编程很新.我在同一个HashMap中存储了一些超类的"扩展".(例如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?这可能不单独检查每个对象吗?这样做有意义吗?希望你能理解我的问题.
1> john16384..:
地图是相当简单的结构,可以优化一种访问形式(按键查找).如果您希望能够快速查找特定类型的项目,则需要使用不同的结构.
例如,您可以选择制作多个地图或制作嵌套地图:
// 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> map = ...;
如果您不介意单独检查每个条目的开销,您可以使用流轻松获取所需的所有元素:
List list = hashmap.values().stream()
.filter(v -> v instanceof XY) // check type
.map(v -> (XY) v) // do cast
.collect(Collectors.toList()); // collect to list