Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建列表<;设置>;从列表中<;对象>;性质相似 假设我有A类对象的列表,现在考虑.< /P> class A { private String x; private String y; //getters and setters } aa=新的A(“x”,“某物1”); A b=新的A(“x”,“某物2”); A c=新的A(“y”,“某物3”); A d=新的A(“y”,“某物4”); 列表列表=新的ArrayList(); `包含a、b、c、d_Java_Java 8_Java Stream - Fatal编程技术网

Java 创建列表<;设置>;从列表中<;对象>;性质相似 假设我有A类对象的列表,现在考虑.< /P> class A { private String x; private String y; //getters and setters } aa=新的A(“x”,“某物1”); A b=新的A(“x”,“某物2”); A c=新的A(“y”,“某物3”); A d=新的A(“y”,“某物4”); 列表列表=新的ArrayList(); `包含a、b、c、d

Java 创建列表<;设置>;从列表中<;对象>;性质相似 假设我有A类对象的列表,现在考虑.< /P> class A { private String x; private String y; //getters and setters } aa=新的A(“x”,“某物1”); A b=新的A(“x”,“某物2”); A c=新的A(“y”,“某物3”); A d=新的A(“y”,“某物4”); 列表列表=新的ArrayList(); `包含a、b、c、d,java,java-8,java-stream,Java,Java 8,Java Stream,我是否可以根据以下条件筛选列表并创建子列表:如果属性x的值等于,则将其分组到子列表 所以输出应该是这样的 A a = new A("x","something1"); A b = new A("x","something2"); A c = new A("y","something3"); A d = new A("y","something4"); List<A> aList = new ArrayList<>(); `alist` contains a, b,c

我是否可以根据以下条件筛选列表并创建子列表:如果属性x的值等于,则将其分组到子列表

所以输出应该是这样的

A a = new A("x","something1");
A b = new A("x","something2");
A c = new A("y","something3");
A d = new A("y","something4");

List<A> aList = new ArrayList<>();

`alist` contains a, b,c ,d
List-someList=new-ArrayList()//someList包含a,b
List someOtherList=new ArrayList()//其他列表包含c,d。

最终输出列表包含someList和someOtherList。

您可以使用Java 8流API和收集器:

List<A> someList = new ArrayList<>(); //someList contains a,b

List<A> someOtherList = new ArrayList<>(); //someOtherList contains c,d.
如果要按两个或多个属性分组,可以使用
数组.asList
作为分类器:

List<A> someList = result.get("x"); // contains a, b
List<A> someOtherList = result.get("y"); // contains c, d
Map result=aList.stream().collect(
Collectors.groupby(a->Arrays.asList(a.getX(),a.getY());

这里有一个复合键,表示为
List

您可以使用Java 8流API和收集器:

List<A> someList = new ArrayList<>(); //someList contains a,b

List<A> someOtherList = new ArrayList<>(); //someOtherList contains c,d.
如果要按两个或多个属性分组,可以使用
数组.asList
作为分类器:

List<A> someList = result.get("x"); // contains a, b
List<A> someOtherList = result.get("y"); // contains c, d
Map result=aList.stream().collect(
Collectors.groupby(a->Arrays.asList(a.getX(),a.getY());
这里有一个复合键,表示为
List

如果属性x的值等于,则将其分组为子列表

您自己说过,您需要根据属性
x
的值对列表进行分组。对于流API,这是通过使用收集器完成的。此收集器返回一个映射,其中条目是将给定分类器应用于流元素的结果,值被收集到列表中

Map<List<Object>, List<A>> result = aList.stream().collect(
                 Collectors.groupingBy(a -> Arrays.asList(a.getX(), a.getY())));
Map Map=aList.stream().collect(Collectors.groupingBy(A::getX));
在您的案例中,此映射将包含2个条目。第一个是键
x
,指向元素
a
b
;第二个将是键
y
,指向元素
c
d

如果属性x的值等于,则将其分组为子列表

您自己说过,您需要根据属性
x
的值对列表进行分组。对于流API,这是通过使用收集器完成的。此收集器返回一个映射,其中条目是将给定分类器应用于流元素的结果,值被收集到列表中

Map<List<Object>, List<A>> result = aList.stream().collect(
                 Collectors.groupingBy(a -> Arrays.asList(a.getX(), a.getY())));
Map Map=aList.stream().collect(Collectors.groupingBy(A::getX));

在您的案例中,此映射将包含2个条目。第一个是键
x
,指向元素
a
b
;第二个是键
y
,指向元素
c
d
,@Tagir提到了一种方法,如果我想检查两个属性值是否相等。只是发布一个不同的实现它

Map<String, List<A>> map = aList.stream().collect(Collectors.groupingBy(A::getX));
Map result=aList.parallelStream()
.collect(收集器).groupingBy(A::getX,
Collectors.collectionAndThen(Collectors.groupingBy(A::getY),Map::values));

parallelStream()
以防列表太大。

@Tagir提到了一种方法,可以检查两个属性值是否相等。只是发布一个不同的实现它

Map<String, List<A>> map = aList.stream().collect(Collectors.groupingBy(A::getX));
Map result=aList.parallelStream()
.collect(收集器).groupingBy(A::getX,
Collectors.collectionAndThen(Collectors.groupingBy(A::getY),Map::values));

parallelStream()
以防列表太大。

您正在寻找
收集器。groupingBy
?将列表中的元素按其
x
属性分组,然后获取相应的列表。是否正在查找
收集器。groupingBy
?根据其
x
属性对列表中的元素进行分组,然后获取相应的列表。假设代替方法引用(仅针对1个属性值相等)我想通过两个属性值检查如何实现假设代替方法引用(仅针对1个属性值相等)我想通过两个属性值来检查它是如何实现的