gpt4 book ai didi

java - 对内部有对象的 ArrayList 进行排序

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

我想对其中包含对象的 ArrayList 的 ArrayList 进行排序。排序需要根据ArrayList中对象的一些属性来完成。就像

ArrayList<ArrayList<Object>> list=new ArrayList<ArrayList<Object>>();

我想使用Collections的Sort方法。

我已尝试以下操作,但显示错误

Collections.sort(ccWrapper.colContainer, new Comparator<ArrayList<Object>>() {
public int compare(Object arg0, Object arg1) {

// TODO Auto-generated method stub

return 0;
}});

错误:比较器类型不是通用的;它不能用参数进行参数化 >

最佳答案

我建议您定义自己的自定义List,它委托(delegate)给ArrayList并且也恰好是Comparable:

public class SortableList implements List<Object>, Comparable<SortableList> {
private ArrayList delegate;

public SortableList(List list) {
delegate = new ArrayList(list);
}

@Override
public int compareTo(SortableList s) {
//Do what you need to do with your casts and comparisons
return 0;
}

//And implement all the other methods in List by simply delegating to the ArrayList member variable
}

您还可以通过扩展 ArrayList 来完成类似且不那么繁琐的操作,但我在处理具体类时遇到了真正的问题。我认为最好将你的类(class)建立在更高层次的抽象之上。但我离题了。

既然已经实现了Comparable,您可以执行以下操作:

List<SortableList> bigList = new ArrayList<>();
//Do stuff with bigList
Collections.sort(bigList);

您不需要 Comparator,因为 Comparable 将为您的自定义列表提供自然排序。您似乎不需要其他比较方法。

如果这还不清楚,我们实际上做了 tutorial ComparableComparator 以及 Github 上提供的文件。如果您愿意,请检查一下。

关于java - 对内部有对象的 ArrayList 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20535895/

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