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

Saa*_*ood 0 java sorting collections arraylist

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

public class Minterm

{
    String minTerm;
    char flagTick;
    String minTermDerive;
    int groupNo;
    String adjGroup;
    static int MaxLiterals;
Run Code Online (Sandbox Code Playgroud)

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

ArrayList<Minterm> column =new  ArrayList<Minterm>();
Run Code Online (Sandbox Code Playgroud)

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

我搜索并提出了我尝试过但没有成功的可比较和比较器接口.有没有其他方法可以做到这一点?或者我正在做比较器实现错误.

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

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());
        }
}
Run Code Online (Sandbox Code Playgroud)

我运行它:

Collections.sort(column , new Comp());
Run Code Online (Sandbox Code Playgroud)

似乎工作正常.但我对它没有完全理解.请确认它是否会按升序排序?

aio*_*obe 6

你应该让Minterm执行Comparable<MinTerm>或编写自定义ComparatorMinTerm,然后使用Collections.sort.

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

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

关于你的编辑:

是.这种种Minterm基于S组升序的顺序.