小编Rav*_*avi的帖子

如何在Java Streams中记录过滤的值

我需要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)

但是,我必须记录被过滤的"约翰"人的详细信息.有人可以帮助我实现这个目标吗?

java java-8 java-stream

15
推荐指数
3
解决办法
2932
查看次数

使用Java 8 Streams基于常见条件从两个不同的列表创建映射

我有两个这样的列表实例:

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 java-8 java-stream

10
推荐指数
2
解决办法
309
查看次数

如何从Java 8 Streams中获取forEach循环的列表输出

我有两个不同的相同对象列表,但不同的属性和这些对象中的公共标识符.我想迭代第一个列表并从第二个列表中获取相应的对象(具有公共属性),然后将这些对象包装起来,最后使用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)

java java-8 java-stream

7
推荐指数
2
解决办法
1万
查看次数

即使在Java中出现编译错误,我也能够创建一个类对象

今天,我遇到了一个场景,我没有覆盖子类中接口的所有方法.但是,当我尝试创建子类的对象时,它仍然工作正常.到目前为止,我的假设是除非解决了所有编译错误,否则我们无法创建对象.

请详细说明一下.

我已经采取了示例.

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对象)是错误的,请告诉我

java java-7

3
推荐指数
1
解决办法
64
查看次数

使用Java Streams使用通用条件筛选给定列表中的对象

我需要从给定的超级列表中获取子列表,如下所述.

假设我有一个"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)

java java-8 java-stream

2
推荐指数
1
解决办法
69
查看次数

使用 Java Streams 从超集中获取子集

我需要从给定的超级列表中获取子列表,如下所述。

假设我有一个“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 对象 …

java list arraylist java-8 java-stream

1
推荐指数
1
解决办法
922
查看次数

标签 统计

java ×6

java-8 ×5

java-stream ×5

arraylist ×1

java-7 ×1

list ×1