从存在于数组列表中的哈希图中消除空键

use*_*244 5 java arraylist hashmap java-8

我正在寻找一种优化的解决方案来nullHashMap. 此 HashMap 存在于ArrayList. 请在下面找到示例。

public class Car {
    String year;
    String model;
    Map<String,String> colors;
}

List<Car> listOfCars = new ArrayList<Car>();
Run Code Online (Sandbox Code Playgroud)

颜色图的示例可能是这样的:

{
   red(1),
   blue(2),
   green(3),
   black(4),
   null(5)
}
Run Code Online (Sandbox Code Playgroud)

我需要一个解决方案来迭代listOfCars,获取颜色图并null从中删除键。试图查看 Java8 中的任何其他选项,而不是使用迭代器。

谢谢!

Ous*_* D. 4

考虑到映射不能包含重复的键,因此我们可以说Map实例的每个实例Car最多只有一个带有null键的条目。

使用 Java-8forEach构造的解决方案是:

listOfCars.forEach(e -> e.getColors().remove(null));
Run Code Online (Sandbox Code Playgroud)

for尽管它也可以通过循环或增强for循环来完成。

  • 如果您不知道映射是否支持“null”,则迭代映射可能有意义,即“remove(null)”和“containsKey(null)”都可能抛出。但是 `map.keySet().removeIf(Objects::isNull)` 仍然比使用 `entrySet()` 操作更简单。 (6认同)