gpt4 book ai didi

Java 类对象排序和分组

转载 作者:行者123 更新时间:2023-12-01 11:12:26 27 4
gpt4 key购买 nike

我想按如下方式对 ClassVO 对象列表进行排序,

ClassVO参数->id、code

示例数据:

ID  Code
A1 A1,AA1
B1 B1,BB1
C1 C1,CC1
D1 D1,DD1
B1 B2,BB2
A1 A2,AA2
C1 C2,CC2
D1 D2,DD2

在我的 ClassVO 列表对象中,上述示例数据以未排序的方式添加。例如,list-1 包含 B1,list-1 包含 D1,list-1 包含 A1,list-1 包含 C1。每次顺序都会有所不同。

现在我想按上面的方法对 ClassVO 列表对象进行排序。即,在对记录进行排序之前,我想按这样的顺序进行分组(首先我想对 A1 的代码进行分组,然后对 B1 的代码、C1 的代码和 D1 的代码进行分组 - 在对代码进行分组时,它应该按升序排列)。分组后,我想要我的 classVO 列表对象,如 A1、B1、C1、D1。

编辑:

我在这里粘贴我的代码

public static void main(String[] args) {
List<TestVo> vos = new ArrayList<TestVo>();
TestVo testVo1 = new TestVo();
testVo1.setCode("b");
testVo1.setId("B_NIT_DEPT");
vos.add(testVo1);
TestVo testVo2 = new TestVo();
testVo2.setId("C_NIT_FUNC");
testVo2.setCode("NIT3");
vos.add(testVo2);
TestVo testVo4 = new TestVo();
testVo4.setCode("NIT4d");
testVo4.setId("D_NIT_DEPT");
vos.add(testVo4);
TestVo testVo = new TestVo();
testVo.setCode("NIT1");
testVo.setId("A_NIT");
vos.add(testVo);
TestVo testVo3 = new TestVo();
testVo3.setCode("a");
testVo3.setId("B_NIT_DEPT");
vos.add(testVo3);
Collections.sort(vos, new MyComparable());
for (TestVo obj: vos) {
System.out.println(obj.getId());
System.out.println(obj.getCode());
}
}


public class MyComparable implements Comparator<TestVo>{
@Override
public int compare(TestVo vo1, TestVo vo2) {
int ret = 0;
if(vo1.getId().compareTo(vo2.getId()) != 0){
ret = vo1.getId().compareTo(vo2.getId());
}
return ret;
}
}

我的输出是:

identifier=A_NIT
Code=NIT1
identifier=B_NIT_DEPT
Code=b
identifier=B_NIT_DEPT
Code=a
identifier=C_NIT_FUNC
Code=NIT3
identifier=D_NIT_DEPT
Code=NIT4d

但是我的预期输出是:

identifier=A_NIT
Code=NIT1
identifier=B_NIT_DEPT
Code=a
identifier=B_NIT_DEPT
Code=b
identifier=C_NIT_FUNC
Code=NIT3
identifier=D_NIT_DEPT
Code=NIT4d

我想按照预期输出部分给出的输出

最佳答案

您可以使用 java Comparable 或 Comparator 来完成此操作。如果您使用的是 Java 8,则无需在单独的类中实现 comparecompareTo 方法。您可以轻松地使用 lambda 表达式来执行此操作。

Collections.sort(listOfClassVO , (ClassVO vo1, ClassVO vo2) -> vo1.getID().compareTo(vo2.getID()));

谢谢

关于Java 类对象排序和分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32198213/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com