Сопоставить значения набора ключей Java Map со строковыми значениями списка объектов Java - PullRequest
0 голосов
/ 17 июня 2019

У меня есть список объектов Java, каждый из которых содержит строковое значение (код).Также у меня есть карта Java.Я хочу проверить, все ли элементы в ключах карты включены в список значений String.

Класс Model:

public class Obj {

private String code;
private String name;
private String uom;

public Obj(String code, String name, String uom) {
    this.code = code;
    this.name = name;
    this.uom = uom;
  }

} 

реализация:

private static final Obj weight = new Obj("weight", "Weight", "Kg");
private static final Obj height = new Obj("height", "Height", "cm");
public static final List<Obj> objMasters = List.of(weight, height);


Set<String> keySet = map.keySet(); // returns the keyset values from the Map

boolean match =objMasters.stream()
  .anyMatch(objMaster -> objMaster.getCode().matches(keySet.toString()));

Но с этой реализацией я всегда получаю false в качестве значения для совпадения.Что здесь пошло не так?

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

0 , когда вы используете коллекцию или карту , переопределите методы equals и hashCode / n1 , вы можете глубоко изучить исходный код, такой как get () serve () и другие методы / n2, к тому времени вы не поймете, почему

0 голосов
/ 17 июня 2019

Из того, что я теперь понял по вашему вопросу, попробуйте это.

List<String> codes = objMasters.stream().map(obj -> obj.getCode()).collect(Collectors.toList());
boolean match = codes.containsAll(keySet);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...