stream流拿到类中的元素,并根据这个元素查找,最后转为map
时间: 2024-05-06 18:21:47 浏览: 91
你可以通过Java 8中的流(Stream)来获取类中的元素,并使用filter()方法进行筛选和查找,最后使用collect()方法将结果转换为map。具体代码示例如下:
```
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class MyClass {
private int id;
private String name;
public MyClass(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return this.id;
}
public String getName() {
return this.name;
}
}
public class StreamTest {
public static void main(String[] args) {
// 创建 MyClass 对象列表
List<MyClass> myList = new ArrayList<MyClass>();
myList.add(new MyClass(1, "Java"));
myList.add(new MyClass(2, "Python"));
myList.add(new MyClass(3, "C++"));
myList.add(new MyClass(4, "PHP"));
myList.add(new MyClass(5, "JavaScript"));
// 将 MyClass 对象列表转换为 Map
Map<Integer, MyClass> myMap = myList.stream()
.filter(mc -> mc.getName().startsWith("J"))
.collect(Collectors.toMap(MyClass::getId, mc -> mc));
System.out.println(myMap);
// 输出结果:{1=MyClass@2, 5=MyClass@6}
// 其中,MyClass@2 和 MyClass@6 是 MyClass 对象的 hashCode 值
// 可以根据需要重写 MyClass 的 toString() 方法来输出更具体的信息
}
}
```
在上面的代码中,我们先创建了一个 MyClass 类,并定义了两个字段,id 和 name。然后我们在 StreamTest 类中创建了一个 MyClass 对象列表,并使用流(Stream)的 filter() 和 collect() 方法来查询并转换该列表。具体的查询条件是:只取 name 以 "J" 开头的 MyClass 对象,并将 id 用作 Key,MyClass 对象本身用作 Value,最终转换成一个 Map。
阅读全文