Map的Key是否存在在List的某个属性
时间: 2024-03-17 22:43:19 浏览: 76
假设你有一个`List<MyObject>`对象列表和一个 `Map<String, Object>` 对象,你想要判断这个 Map 中的 Key 是否存在于对象列表中某个属性的值中,那么你可以使用 Java 8 Stream 的方式来实现,具体代码如下:
```java
List<MyObject> myObjectList = new ArrayList<>();
Map<String, Object> myMap = new HashMap<>();
// 判断 Map 中的 Key 是否存在于对象列表中某个属性的值中
boolean isExist = myObjectList.stream()
.anyMatch(myObject -> myObject.getMyProperty().equals(myMap.get("myKey")));
if(isExist) {
System.out.println("Map 中的 Key 存在于对象列表中某个属性的值中");
} else {
System.out.println("Map 中的 Key 不存在于对象列表中某个属性的值中");
}
```
这里使用了 `anyMatch` 方法来判断是否存在某个元素满足条件,如果存在,则返回 true,否则返回 false。其中,`myObject.getMyProperty()` 表示对象中的一个属性,你需要将其替换为你自己的属性名称。
相关问题
找出Map的Key不存在在List的某个属性
假设你有一个 `List<MyObject>` 对象列表和一个 `Map<String, Object>` 对象,你想要找出这个 Map 中的 Key 不存在于对象列表中某个属性的值中的情况,那么你可以使用 Java 8 Stream 的方式来实现,具体代码如下:
```java
List<MyObject> myObjectList = new ArrayList<>();
Map<String, Object> myMap = new HashMap<>();
// 找出 Map 中的 Key 不存在于对象列表中某个属性的值中
List<String> nonExistKeys = myMap.keySet().stream()
.filter(key -> myObjectList.stream()
.noneMatch(myObject -> myObject.getMyProperty().equals(key)))
.collect(Collectors.toList());
if(nonExistKeys.size() > 0) {
System.out.println("以下 Key 不存在于对象列表中某个属性的值中:" + String.join(", ", nonExistKeys));
} else {
System.out.println("所有 Key 都存在于对象列表中某个属性的值中");
}
```
这里使用了 `filter` 方法来筛选出不存在于对象列表中某个属性的值中的 Key,然后使用 `collect` 方法将结果转成 List。其中,`myObject.getMyProperty()` 表示对象中的一个属性,你需要将其替换为你自己的属性名称。如果不存在这样的 Key,则返回一个空的 List。
java 将一个对象list 转化为map key为某一对象的某个属性值,value为同一属性值的对象list
可以使用Java 8的stream和Collectors工具类来实现这个功能,具体的代码如下:
假设我们有一个Student类,有两个属性:id和name,我们要将它们的List转化为Map,以id为key,以相同id的所有Student对象组成的List为value。
```java
public class Student {
private int id;
private String name;
public Student(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
```
```java
List<Student> students = new ArrayList<>();
students.add(new Student(1, "张三"));
students.add(new Student(1, "李四"));
students.add(new Student(2, "王五"));
students.add(new Student(3, "赵六"));
Map<Integer, List<Student>> studentMap = students.stream().collect(Collectors.groupingBy(Student::getId));
```
上面的代码中,我们使用了stream的groupingBy方法,以Student对象的id属性为key,将相同id的Student对象组成的List作为value,最终生成一个Map<Integer, List<Student>>对象。
阅读全文