按字母顺序排列

我是Java的新手,我正在尝试按字母顺序排列术语的数组列表。 (术语定义为char和int)(例如{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  maxtest) { tester = max; } } return max; } 

为什么这不起作用? 我该如何做到这一点? 我的arrayList被称为术语填充类型Term

你对这行代码的问题。 你的类不是Comparable类型那么,在哪个属性或标准compareTo()方法会compare这两个对象???

  res = maxtest.compareTo(maxtest2); //Your maxtest object is not Comparable Type. 

您必须使您的类具有Term Comparable类型。 并根据需要覆盖方法compareTo()

您没有提及类Term的变量或结构。 所以,我假设你的class级有这种结构。

 public class Term implements Comparable { 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; } } 

现在你的class级成为一个comparable类型。 因此,您可以应用Collections.sort(Collection obj)自动sort ArrayList sort

在这里,我为此编写了一个演示。

 public static void main(String... args){ List 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); } 

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

例:

 public class Term implements Comparable { ..... // ..... // criteria to sort is the char @Override public int compareTo(Term o) { if (o.getLetter()> this.letter) { return 1; } else if (o.getLetter() < this.letter) { return -1; } else { return 0; } } 

 public static void main(String[] args) { // test List myTermList = new ArrayList<>(); myTermList.add(new Term('Z', 4)); myTermList.add(new Term('Q', 2)); myTermList.add(new Term('c', 3)); // check how the look like System.out.println("This is the list unsorted: " + myTermList); // now sort them Collections.sort(myTermList); // check how the look like System.out.println("This is the list SORTED: " + myTermList); } 

编辑>

如果你不想实现可比性,那么修改这个:

 res = maxtest.compareTo(maxtest2); 

因为这是无效的,因为maxtest和maxtest2是原始而不是对象......

改用

 res = Character.compare(maxtest, maxtest2); 

然后使用结果validation您的逻辑并做出决定:

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