你好到目前为止这就是我所做的
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]虽然我想使用我过滤它们的相同名称返回它们。
有什么想法吗?
答案 0 :(得分:4)
您应该map()
每次过滤Person
到相应的名称:
Arrays.stream(array)
.map(Person::getName)
.filter(name_to_test::equals)
.toArray();
当然,您必须确保name
中有Person
的getter方法:
class Person {
public String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
答案 1 :(得分:2)
您可以@Override
Object#toString()
个Person
方法中的name
方法来打印其名称。
打印数组时,这将显示其[class]@[hash]
属性。
Object#toString()
表示法是未被覆盖时对象的默认"getent group #{mygroup}"
"getent passwd #{myuser}"
表示。
答案 2 :(得分:1)
你错过了在课堂上覆盖class Person{
public String name;
public Person(String name){
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
'}';
}
}
方法。
[Person{name='person1'}, Person{name='person1'}]
现在输出为:// Wait till all images are loaded before initiating the scrollr
var total_images = $("body img").length;
var images_loaded = 0;
$(document).ready(function(e) {
$("body").find('img').each(function() {
var fakeSrc = $(this).attr('src');
$("<img>").attr("src", fakeSrc).load(function() {
images_loaded++;
if (images_loaded >= total_images) {
// now all images are loaded.
var s = skrollr.init();
}
});
});
});