我需要log/sysoutJava Streams中的过滤值.我能够log/sysout使用非过滤值的peek()方法.但是,有人可以让我知道如何记录过滤值?
例如,假设我有一个Person像这样的对象列表:
List<Person> persons = Arrays.asList(new Person("John"), new Person("Paul"));
Run Code Online (Sandbox Code Playgroud)
我想过滤掉那些不是"约翰"的人如下:
persons.stream().filter(p -> !"John".equals(p.getName())).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
但是,我必须记录被过滤的"约翰"人的详细信息.有人可以帮助我实现这个目标吗?
我有两个这样的列表实例:
List<NameAndAge> nameAndAgeList = new ArrayList<>();
nameAndAgeList.add(new NameAndAge("John", "28"));
nameAndAgeList.add(new NameAndAge("Paul", "30"));
nameAndAgeList.add(new NameAndAge("Adam", "31"));
List<NameAndSalary> nameAndSalaryList = new ArrayList<>();
nameAndSalaryList.add(new NameAndSalary("John", 1000));
nameAndSalaryList.add(new NameAndSalary("Paul", 1100));
nameAndSalaryList.add(new NameAndSalary("Adam", 1200));
Run Code Online (Sandbox Code Playgroud)
这里NameAndAge是
class NameAndAge {
public String name;
public String age;
public NameAndAge(String name, String age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + ": " + age;
}
}
Run Code Online (Sandbox Code Playgroud)
并且NameAndSalary是
private class NameAndSalary {
private String name;
private double …Run Code Online (Sandbox Code Playgroud) 我有两个不同的相同对象列表,但不同的属性和这些对象中的公共标识符.我想迭代第一个列表并从第二个列表中获取相应的对象(具有公共属性),然后将这些对象包装起来,最后使用Java Streams将该对象添加到列表中.
这是我采取的例子.
private class Person {
private String name;
private boolean isSenior;
private Person(String name, boolean isSenior) {
this.name = name;
this.isSenior = isSenior;
}
public String getName() {
return name;
}
public boolean isSenior() {
return isSenior;
}
@Override
public String toString() {
return name + ": " + isSenior;
}
}
private class PersonWrapper {
private Person jrPerson;
private Person srPerson;
private PersonWrapper(Person jrPerson, Person srPerson) {
this.jrPerson = jrPerson;
this.srPerson = srPerson;
}
public Person getJrPerson() …Run Code Online (Sandbox Code Playgroud) 今天,我遇到了一个场景,我没有覆盖子类中接口的所有方法.但是,当我尝试创建子类的对象时,它仍然工作正常.到目前为止,我的假设是除非解决了所有编译错误,否则我们无法创建对象.
请详细说明一下.
我已经采取了示例.
interface Parent {
public void test();
}
class Child implements Parent {
public void print() {
System.out.println("Didn't expect to print");
}
}
Run Code Online (Sandbox Code Playgroud)
Child类给了我编译时错误,要求我从界面覆盖方法.忽略错误,当我尝试创建下面的对象并执行下一个语句时,它给出了底部指示的输出.
Child child = new Child();
child.print();
Run Code Online (Sandbox Code Playgroud)
输出:
Didn't expect to print
Run Code Online (Sandbox Code Playgroud)
PS:我在Java 7上试过这个
如果我的基本理解(在不解决编译错误的情况下无法创建Java对象)是错误的,请告诉我
我需要从给定的超级列表中获取子列表,如下所述.
假设我有一个"Person"对象的超级列表,如下所示:
List<Person> personsList = new ArrayList<>();
personsList.add(new Person("John", 28));
personsList.add(new Person("Paul", 29));
personsList.add(new Person("Adam", 30));
personsList.add(new Person("Peter", 31));
personsList.add(new Person("Kate", 32));
personsList.add(new Person("John", 67));
personsList.add(new Person("Paul", 68));
personsList.add(new Person("Adam", 69));
Run Code Online (Sandbox Code Playgroud)
让Person类定义如下:
class Person {
public String name;
public int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + ": " + age;
}
}
Run Code Online (Sandbox Code Playgroud)
通过使用Java Streams API,如何获取包含以下条目的子列表(请注意,必须获取具有相同名称的对象的重复实例):
John : 28
John : 67
Paul : 29 …Run Code Online (Sandbox Code Playgroud) 我需要从给定的超级列表中获取子列表,如下所述。
假设我有一个“Person”对象的超级列表,如下所示:
List<Person> personsList = new ArrayList<>();
personsList.add(new Person("John", 28));
personsList.add(new Person("Paul", 29));
personsList.add(new Person("Adam", 30));
personsList.add(new Person("Peter", 31));
personsList.add(new Person("Pat", 32));
Run Code Online (Sandbox Code Playgroud)
让 Person 类定义如下:
class Person {
public String name;
public int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + ": " + age;
}
}
Run Code Online (Sandbox Code Playgroud)
给定这样的子列表:
String [] names = {"John", "Paul", "Adam"};
List<String> namesList = Arrays.asList(names);
Run Code Online (Sandbox Code Playgroud)
我想获取名称为John,Paul和的 Person 对象 …