Java 按字母顺序排列

Java 按字母顺序排列,java,arraylist,alphabet,Java,Arraylist,Alphabet,我是Java新手,我正在尝试按字母顺序排列术语的数组列表。(术语定义为字符和整数)(例如{term('Z',4),term('C',3),term('Q',2)…}) 我的代码如下: public Term nextElement() { Term max = terms.get(0); char maxtest = max.getElement(); for (int i = 1; i < terms.size(); i++){ Term

我是Java新手,我正在尝试按字母顺序排列术语的数组列表。(术语定义为字符和整数)(例如
{term('Z',4),term('C',3),term('Q',2)…})

我的代码如下:

    public Term nextElement()
{
    Term max = terms.get(0);
    char maxtest = max.getElement();
    for (int i = 1; i < terms.size(); i++){
        Term tester = terms.get(i);
        char maxtest2 = tester.getElement();
        if (maxtest2 > maxtest) {
            tester = max;
        }
    }
    return max;
}
公共术语nextElement() { 术语最大值=术语。获取(0); char maxtest=max.getElement(); 对于(int i=1;imaxtest){ 测试仪=最大值; } } 返回最大值; } 为什么这不起作用?我如何做到这一点?
我的arrayList称为term filled with type term

您可以使用Collection类对您拥有的术语列表进行排序,您只需使类术语具有可比性

例子: 因为这是无效的,因为maxtest和maxtest2是原语而不是对象

改用

res = Character.compare(maxtest, maxtest2);
然后使用结果验证您的逻辑并做出决策:

if (res >1) {
            System.out.println("bigger");

        }else if (res<1) {
            System.out.println("smaller");

        }else {
            System.out.println("same");

        }
if(res>1){
System.out.println(“更大”);

}else if(res这行代码的问题。您的类不是一种可比较的类型那么,哪个属性或条件compareTo()方法将比较这两个对象

   res = maxtest.compareTo(maxtest2); //Your maxtest object is not Comparable Type.
您必须使您的类
Term
为可比较类型。并且,根据需要重写方法
compareTo()

您没有提到类的变量或结构
Term
。因此,我假设您的类具有这种结构

public class Term implements Comparable<Term> {
    private Character alpha;
   private int number;
   //getter and setters +Constructors as you specified
   ....
    ....
     ...
      .....
//  Now Set a criteria to sort is the Alphanumeric.
    @Override
    public int compareTo(Term prm_obj) {
        if (prm_obj.getAlpha() > this.alpha) {
            return 1;
        } else if (prm_obj.getAlpha() < this.alpha) {
            return -1;

        } else {
            return 0;
        }

    }

要做到这一点,我必须创建另一个类,还是只导入一个类?您可以在同一个类中执行所有操作只需将实现可比性添加到术语类中如何修改我的方法?它说不能取消对char的引用。或者有没有办法使用Max()方法执行此操作?它说术语不是抽象的,并且不会覆盖抽象方法compareTojava.lang.com中的(术语)
if (res >1) {
            System.out.println("bigger");

        }else if (res<1) {
            System.out.println("smaller");

        }else {
            System.out.println("same");

        }
   res = maxtest.compareTo(maxtest2); //Your maxtest object is not Comparable Type.
public class Term implements Comparable<Term> {
    private Character alpha;
   private int number;
   //getter and setters +Constructors as you specified
   ....
    ....
     ...
      .....
//  Now Set a criteria to sort is the Alphanumeric.
    @Override
    public int compareTo(Term prm_obj) {
        if (prm_obj.getAlpha() > this.alpha) {
            return 1;
        } else if (prm_obj.getAlpha() < this.alpha) {
            return -1;

        } else {
            return 0;
        }

    }
public static void main(String... args){

    List<Term> obj_listTerm = new ArrayList<>();
     //add all the data you given in question
    obj_listTerm .add(new Term('Z', 4)); 
    obj_listTerm .add(new Term('Q', 2));
    obj_listTerm .add(new Term('c', 3));

    // print without Sorting your Term ArrayList.
    System.out.println("This is the list unsorted: " + myTermList);
    // Sort Using Collections.sort() Method.

    Collections.sort(myTermList);

    // After applying sort() you may see your Sorted ArrayList.
    System.out.println("This is the list SORTED: " + myTermList);
}