java - 如何根据键获取 HashMap 值?
问题描述
因此,我有一个 ArrayList,其中包含具有名称、id、薪水等的对象。还有一个包含另一个 ArrayList 对象、模型、年份等的队列。我创建了一个 HashMap 并将 ArrayList 对象用作键,将队列用作值,将每个队列关联为数组列表中的一个对象。
问题是,我必须列出确定键的所有值。我想知道如何根据对象的名称值返回哈希图的所有值。
例如这是我的地图:
{Mech [Name = Ella McCarthy , ID = 1]=[汽车 [model=Civic, year=2010, fix=flat tyres], Car [model=Audi A3, year=2012, fix=something broken]],
机甲 [姓名 = Josh Reys , ID = 1]=[汽车 [型号=Cruze, 年份=2014, 修复=损坏的东西], 汽车 [型号=Impala, 年份=1990, 修复=损坏的东西]]}
如果键中对象中的名称等于 Ella McCarthy,是否有任何方法可以返回值?
解决方案
下一个代码可能会为您提供全面的:
public class MapExample {
private static final String DETERMINED_KEY = "Ella McCarthy";
Queue<Car> queue = new PriorityQueue<>();
Map<Mech, Queue<Car>> map = new HashMap<>();
Queue<Car> getValuesByNameInKeyObjectWithStreams() {
Queue<Car> cars = map.entrySet()
.stream()
.filter(mapEntry -> mapEntry.getKey().getName().contentEquals(DETERMINED_KEY))
.map(Map.Entry::getValue)
.findFirst()
.orElseThrow(); // Throw exception if did't find according value. Or return another result with orElse(result)
return cars;
}
Queue<Car> getValuesByNameInKeyObjectBeforeJava8() {
for (Map.Entry<Mech, Queue<Car>> entry : map.entrySet()) {
String mechName = entry.getKey().getName();
if (mechName.equals(DETERMINED_KEY)) {
return entry.getValue();
}
}
// Throw exception or return another result
throw new RuntimeException("If didn't find exception");
}
}
class Mech {
String name;
public String getName() {
return name;
}
}
class Car {
String value;
}
如果您更喜欢函数式风格并使用 java 8 或更高版本,请查看 getValuesByNameInKeyObjectWithStreams 方法。
推荐阅读
- python - Django:尝试使用正确的参数创建时出现意外的关键字错误
- google-photos - 如何获取 Google 相册标签?
- python-3.x - 从 django 中的查询中获取最高 3 条计数记录
- java - 如何将字符串时间戳解析为 LocalDateTime
- javascript - 由于复杂的 js 功能而无法访问此对象 - Vuejs
- visual-studio - C++/WinRT natvis 在全新安装中不起作用
- python - 如何检查列表中是否有元素而不会出现python中的索引错误
- animation - 动画 SVG 属性填充以在动画后进行渐变填充
- image - 在磁盘上保存代表图像的几个 Numpy 数组的列表
- javascript - 在 ajax 脚本之后运行 event.preventDefault() 时,有什么方法可以按名称获取多个 POST 请求?