java返回带有Lambda的字符串列表项
你好到目前为止这就是我所做的
class Ideone{
public static void main (String[] args) throws java.lang.Exception{
Person p1 = new Person("person1");
Person p2 = new Person("person1");
Person [] array = new Person[]{p1, p2};
String name_to_test = "person1";
System.out.println(Arrays.toString(Arrays.stream(array).filter(x -> x.name.equals(name_to_test)).toArray()));
}
}
class Person{
public String name;
public Person(String name){
this.name = name;
}
}
但我明白
[Person@1ab7765, Person@128cdfa]而我想用过滤它们的相同名称返回它们
有什么想法吗
# 1 楼答案
您可以使用
@Override
对象中的Object#toString()
方法来打印它们的名称这将在打印阵列时显示它们的
name
属性[class]@[hash]
表示法是未被重写时对象的默认Object#toString()
表示法# 2 楼答案
您没有在类中重写
toString
方法现在输出是:
[Person{name='person1'}, Person{name='person1'}]
# 3 楼答案
您应该
map()
将每个经过筛选的Person
转换为其相应的名称:当然,您必须确保
Person
中的name
有一个getter方法: