java - 如何根据 myobject 的属性对 ArrayList<myobject> 进行排序

标签 java sorting collections arraylist

我想根据对象属性对 ArrayList 中的一些对象进行排序。 该对象具有:

public class Minterm

{
    String minTerm;
    char flagTick;
    String minTermDerive;
    int groupNo;
    String adjGroup;
    static int MaxLiterals;

然后我在主要方法中有这个:

ArrayList<Minterm> column =new  ArrayList<Minterm>();

然后我在列表中添加一些 Minterm 类型的对象。但最后我想组织它们并在成员变量groupNo上对它们进行排序(升序)。

我搜索并想出了我尝试过但没有成功的可比较和比较器接口(interface)。还有其他方法可以做到这一点吗?或者我的比较器执行错误了。

编辑: 以下是我为比较器编写的代码。请确认是否按升序排序?

package backEnd;

import java.util.Comparator;

public class Comp implements Comparator<Minterm>
{
        @Override
        public int compare(Minterm a, Minterm b) 
        {
            return a.getgroupOne().compareTo(b.getgroupOne());
        }
}

我运行它:

Collections.sort(column , new Comp());

似乎工作正常。但我对此没有很好的理解。 请确认是否按升序排序?

最佳答案

你应该让Minterm实现Comparable<MinTerm>或编写自定义 Comparator对于 MinTerm然后使用 Collections.sort .

使用比较器,它看起来像这样:

Collections.sort(column, new Comparator<Minterm>() {
    @Override
    public int compare(Minterm o1, Minterm o2) {
        return Integer.valueOf(o1.groupNo).compareTo(o2.groupNo);
    }
});

关于您的编辑:

是的。排序Minterm基于按升序顺序排列的组。

关于java - 如何根据 myobject 的属性对 ArrayList<myobject> 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10818455/

相关文章:

java - Java中字符串转换为时间戳时添加夏令时

c++ - Bjarne Stroustrup 的 C++ 编程和实践第 2 版中的单参数排序

JavaScript:如何对包含 NaN 的数组进行排序

java - 为什么 array.sorts 对父数组进行排序?

asp.net-mvc - backbone.js 从 asp.net mvc View 模型填充大型嵌套模型

java - 抛出异常或返回 null

java - 如何查看页面输出的java错误?

java - 通用类方法 forName

java - 为什么 List.toArray() 返回一个对象数组?

arrays - 比较一个对象看它是否是一个集合而不使用 TypeName 并将其作为字符串进行比较?