我正在开发一个程序,我必须计算文件中食物项的频率,以便按降序对它们进行排序。
例如:如果我的文件有(pizza、ice_cream、pasta、pizza)
我希望我的程序打印类似这样的内容:
1 个冰淇淋 1 份意大利面 2个披萨
我正在使用冒泡排序算法,但似乎我缺少一些使该算法发挥作用的东西。任何帮助将不胜感激!
在 Listabc 类中,我有两个局部变量和一个名为“compareTo”的方法。
class Listabc {
int count = 1;
String item;
int compareTo(Listabc listabc) {
return 0;
}
}
在我的主要方法中,我有一个冒泡排序算法来按降序对食物进行排序
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));
}
}
}
最佳答案
您的 compareTo
方法的实现已损坏。您需要通过应用实际比较来更改它:
int compareTo(Listabc listabc) {
return 0; //this means every element is "similar" to another
}
以下是通过 item
字段比较元素的示例:
int compareTo(Listabc listabc) {
return this.item.compareTo(listabc.item);
}
关于Java - 对 ArrayList 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23536439/