gpt4 book ai didi

java - java中如何对数组列表进行排序

转载 作者:行者123 更新时间:2023-12-01 18:06:36 25 4
gpt4 key购买 nike

基本上可以通过以下方式进行排序:

集合.sort(列表);

但我的情况有点不同。我有一个包含以下对象的列表。

示例代码1:

public class GetTraders {
private String getTraderLegalName;
private String businessName;
private Object status;

public GetTraders(String getTraderLegalName, String businessName, String status) {
this.getTraderLegalName=getTraderLegalName;
this.businessName=businessName;
this.status=status;
}

我有一个类将为上面的列表提供值,如下所示:

public Class getResult {
List<GetTraders> traders=new ArrayList<GetTraders>();
public void valueGivenByuser(String legal,String business,Object status)throws Exception {
GetTraders trade=new GetTraders(legal,business,status);
traders.add(trade); //Adding value to arrayList
}
}

这里的问题是,一旦我添加了交易者数组列表中的所有值,我需要排序并显示为输出。我尝试使用 collections.sort() 但它显示编译器异常。

最佳答案

如果你仔细观察Collections API ,您将看到有两个选项可供您使用:

1) 让您的 GetTraders 类实现 Comparable 接口(interface)并调用

public static <T extends Comparable<? super T>> void sort(List<T> list)

2) 为 GetTraders 类创建一个新的比较器并调用

public static <T> void sort(List<T> list, Comparator<? super T> c)

第一个解决方案是最简单的,但如果您需要根据多个条件对 GetTraders 对象进行排序,那么第二个解决方案是最佳选择。

正如 @Vaseph 所指出的,如果您使用 Java 8,生活会突然变得更容易,因为您需要做的就是:

traders.sort((GetTraders trade1, GetTraders trade2) -> {
return trade1.getBusinessName().compareTo(trade2.getBusinessName());
});

但是,如果您在使用 Comparable 和 Comparator 接口(interface)时遇到问题,我建议您先尝试 Java-8 之前的解决方案,然后再深入了解函数式接口(interface)的神奇世界。

<小时/>

为了完整起见,还请在下面找到每个解决方案的示例:

1)基于可比的解决方案:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class GetTraders1 implements Comparable<GetTraders1> {

private String getTraderLegalName;
private String businessName;
private Object status;

public GetTraders1(String getTraderLegalName, String businessName, String status) {
this.getTraderLegalName=getTraderLegalName;
this.businessName=businessName;
this.status=status;
}

@Override
public int compareTo(GetTraders1 that) {
return this.getTraderLegalName.compareTo(that.getTraderLegalName);
}

@Override
public String toString() {
return "GetTraders [getTraderLegalName=" + getTraderLegalName + ", businessName=" + businessName + ", status=" + status + "]";
}

public static void main(String[] args) {

GetTraders1 getTraders1 = new GetTraders1("1", "bn", "status");
GetTraders1 getTraders2 = new GetTraders1("2", "bn", "status");
GetTraders1 getTraders3 = new GetTraders1("3", "bn", "status");

List<GetTraders1> list = new ArrayList<>();
list.add(getTraders3);
list.add(getTraders2);
list.add(getTraders1);

System.out.println(list);

Collections.sort(list);

System.out.println(list);

}

}

2)基于比较器的解决方案

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class GetTraders2 {

private String getTraderLegalName;
private String businessName;
private Object status;

public GetTraders2(String getTraderLegalName, String businessName, String status) {
this.getTraderLegalName=getTraderLegalName;
this.businessName=businessName;
this.status=status;
}

@Override
public String toString() {
return "GetTraders [getTraderLegalName=" + getTraderLegalName + ", businessName=" + businessName + ", status=" + status + "]";
}

public static void main(String[] args) {

GetTraders2 getTraders1 = new GetTraders2("1", "bn", "status");
GetTraders2 getTraders2 = new GetTraders2("2", "bn", "status");
GetTraders2 getTraders3 = new GetTraders2("3", "bn", "status");

List<GetTraders2> list = new ArrayList<>();
list.add(getTraders3);
list.add(getTraders2);
list.add(getTraders1);

System.out.println(list);

Collections.sort(list, new Comparator<GetTraders2>() {

@Override
public int compare(GetTraders2 o1, GetTraders2 o2) {
return o1.getTraderLegalName.compareTo(o2.getTraderLegalName);
}

});

System.out.println(list);

}

}

关于java - java中如何对数组列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35961460/

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