wordpress数字交易模板,站长工具seo综合查询网,网站子目录安装dedecms导致网页布局混乱的解决方法,做分子生物实验常用网站你可以使用Java 8的流来实现这个功能。假设你有两个包含对象的List#xff0c;每个对象有一个属性#xff0c;你想根据一个List中的属性值来过滤掉另一个List中不包含这个属性值的对象。下面是一种使用流的方式来实现这个功能
import java.util.ArrayList;
import java.util…你可以使用Java 8的流来实现这个功能。假设你有两个包含对象的List每个对象有一个属性你想根据一个List中的属性值来过滤掉另一个List中不包含这个属性值的对象。下面是一种使用流的方式来实现这个功能
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;class MyClass {private String property;public MyClass(String property) {this.property property;}public String getProperty() {return property;}
}public class Main {public static void main(String[] args) {ListMyClass list1 new ArrayList();list1.add(new MyClass(A));list1.add(new MyClass(B));list1.add(new MyClass(C));ListString list2 new ArrayList();list2.add(A);list2.add(B);ListMyClass filteredList list1.stream().filter(obj - list2.contains(obj.getProperty())).collect(Collectors.toList());filteredList.forEach(obj - System.out.println(obj.getProperty()));}
}在上面的例子中我们有两个Listlist1包含了MyClass对象每个对象有一个属性propertylist2包含了一些属性值。我们使用流来筛选list1中的对象只保留那些property值在list2中存在的对象最后将筛选后的结果收集到filteredList中。
输出的结果将会是
A
B这是根据list2中的属性值过滤掉了list1中不包含这部分属性的对象。你可以根据自己的实际需要修改代码适应不同的数据类型和属性名称。
要是类中有很多属性那该怎么写
如果类中有很多属性你可以根据需要编写适合的筛选条件来过滤掉不符合要求的对象。下面是一个示例演示了如何根据类中的多个属性进行过滤。
假设你有一个名为Person的类该类有多个属性包括name、age和gender。你想根据一组条件对Person对象进行过滤这些条件包括age大于等于18同时gender为male。下面是一个使用流的示例代码
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;class Person {private String name;private int age;private String gender;public Person(String name, int age, String gender) {this.name name;this.age age;this.gender gender;}public String getName() {return name;}public int getAge() {return age;}public String getGender() {return gender;}
}public class Main {public static void main(String[] args) {ListPerson personList new ArrayList();personList.add(new Person(Alice, 28, female));personList.add(new Person(Bob, 20, male));personList.add(new Person(Charlie, 25, male));personList.add(new Person(Diana, 16, female));ListPerson filteredList personList.stream().filter(person - person.getAge() 18 person.getGender().equals(male)).collect(Collectors.toList());filteredList.forEach(person - System.out.println(person.getName()));}
}在上面的例子中我们定义了一个Person类该类有三个属性name、age和gender。我们使用流的filter操作来对personList中的对象进行筛选只保留那些满足age大于等于18并且gender为male的对象。最后我们将筛选结果收集到filteredList中并打印每个对象的name属性。
输出的结果将会是
Bob
Charlie这是根据定义的条件过滤掉了personList中不符合要求的Person对象。你可以根据自己的实际需求修改代码添加或修改筛选条件以适应不同的属性和值。
要是两个list中的元素对象存在多个属性。如何根据一个list中的对象的某个属性去过滤另一个集合元素?
如果两个集合中的元素对象有多个属性并且你想要根据一个集合中的对象的某个属性值来过滤另外一个集合中的元素你可以使用流和条件谓词来实现。下面是一个示例代码演示了如何根据一个集合中的对象的某个属性值过滤另一个集合中的元素
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;class Element {private int id;private String name;public Element(int id, String name) {this.id id;this.name name;}public int getId() {return id;}public String getName() {return name;}
}public class Main {public static void main(String[] args) {ListElement list1 new ArrayList();list1.add(new Element(1, A));list1.add(new Element(2, B));list1.add(new Element(3, C));ListElement list2 new ArrayList();list2.add(new Element(1, X));list2.add(new Element(2, Y));list2.add(new Element(3, Z));ListElement filteredList list2.stream().filter(obj - list1.stream().map(Element::getId).collect(Collectors.toList()).contains(obj.getId())).collect(Collectors.toList());filteredList.forEach(obj - System.out.println(obj.getName()));}
}在上面的例子中我们有两个集合list1和list2每个集合包含了Element对象每个对象有两个属性id和name。我们使用流来筛选list2中的元素只保留那些id值在list1中存在的元素最后将筛选后的结果收集到filteredList中。
输出的结果将会是
X
Y
Z这是根据list1中元素的id属性值过滤掉了list2中不包含这部分属性的元素。你可以根据自己的实际需要修改代码适应不同的数据类型和属性名称。
要是过滤后想保留集合中的整个对象如何书写?
如果你希望在过滤后保留集合中的整个对象而不仅仅是属性值你可以在过滤时使用 anyMatch() 方法来判断某个属性值是否存在于另一个集合中然后将通过判断的对象保留下来。下面是一个示例代码
import java.util.ArrayList;
import java.util.List;class Element {private int id;private String name;public Element(int id, String name) {this.id id;this.name name;}public int getId() {return id;}public String getName() {return name;}
}public class Main {public static void main(String[] args) {ListElement list1 new ArrayList();list1.add(new Element(1, A));list1.add(new Element(2, B));list1.add(new Element(3, C));ListElement list2 new ArrayList();list2.add(new Element(1, X));list2.add(new Element(2, Y));list2.add(new Element(3, Z));ListElement filteredList new ArrayList();for (Element obj2 : list2) {if (list1.stream().anyMatch(obj1 - obj1.getId() obj2.getId())) {filteredList.add(obj2);}}filteredList.forEach(obj - System.out.println(obj.getName()));}
}在上面的例子中我们有两个集合 list1 和 list2它们包含了 Element 对象并具有相应的属性。我们通过遍历 list2 中的元素使用 anyMatch() 方法检查该元素的 id 属性是否存在于 list1 中的任意一个元素中。如果存在则将该对象添加到 filteredList 集合中。最后我们打印输出 filteredList 中的元素的 name 属性。
输出的结果将会是
X
Y
Z这样就根据 list1 中的对象的某个属性值过滤掉了 list2 中不包含这部分属性的元素并保留了整个对象。你可以根据具体的需求修改代码以适应不同的数据类型和属性名称。