Java - 对ArrayList进行排序

Sdl*_*dlS 0 java sorting

我正在开发一个程序,我必须计算文件中食物的频率,以便按降序对它们进行排序.

例如:如果我的文件有(披萨,冰淇淋,意大利面,披萨)

我希望我的程序打印类似于此的东西:

1 ice_cream 1意大利面2披萨

我正在使用冒泡排序算法,但似乎我遗漏了这个算法的工作原理.任何帮助将不胜感激!

在类Listabc中,我有两个局部变量和一个名为"compareTo"的方法.

class Listabc {

     int count = 1;
     String item;


     int compareTo(Listabc listabc) {
        return 0;
     }

}
Run Code Online (Sandbox Code Playgroud)

在我的主要方法中,我有一个冒泡排序算法,按降序排序食品

public class MainMethod {

   public static void main(String[] args) throws FileNotFoundException {

       Scanner input = new Scanner(new BufferedReader(new FileReader("file.txt")));

       List<Listabc> lists = new ArrayList<Listabc>();

       for (int a = 0; a < lists.size() - 1; ++a) {
           for (int b = a + 1; b < lists.size(); b++) {
               if ((lists.get(b)).compareTo(lists.get(a)) > 0) {
                   Listabc temp = lists.get(a);
                   lists.set(a, lists.get(b));
                   lists.set(b, temp);
               }
           }
           System.out.println(lists.get(a));
       }

     }
 }
Run Code Online (Sandbox Code Playgroud)

Lui*_*oza 5

你的compareTo方法实现被打破了.你需要通过应用真正的比较来改变它:

int compareTo(Listabc listabc) {
    return 0; //this means every element is "similar" to another
}
Run Code Online (Sandbox Code Playgroud)

这是一个关于按item字段比较元素的示例:

int compareTo(Listabc listabc) {
    return this.item.compareTo(listabc.item);
}
Run Code Online (Sandbox Code Playgroud)