我有一个包含数百行的文本文件。它看起来像这样: unitName unitPackage unitPrice 。我得对它进行排序并总结。例如,我们得到了这四行:
foo1 01abc 30.00
foo2 02abc 31.50
foo1 04abc 35.00
foo1 01abc 30.00
在我的工作之后我必须得到这样的结果:
foo1 2 (01abc) 60.00
foo2 1 (02abc) 31.50
foo1 1 (04abc) 35.00
我的想法是创建产品类( String unitName,String unitPackage,double unitPrice )并将它放到类似的arraylist中:
List<Product> products = new ArrayList<>();
while (inputFile.hasNextLine()) {
Product product = new Product(inputFile.next(), inputFile.next(), inputFile.nextDouble());
products.add(product);
}
直到那一刻一切正常,但我不明白,如何整理东西。像这样做这样做的总体好概念是什么?请咨询一下。
答案 0 :(得分:0)
如果您需要对列表进行排序,可以使用课程sort
中的方法Collections
public static <T> void sort(List<T> list,
Comparator<? super T> c)
要使用它,您需要创建一个Comparator
来定义如何对项目进行排序。
List<Product> products = ...
...
Collections.sort(products, new Comparator<Product>() {
compare(Product o1, Product o2) {
// Here define how to compare two products
}
});
// Here products is sorted as you defined before
答案 1 :(得分:0)
有很多方法可以对数组列表进行排序。在您的特定情况下,您将每个项目放入列表中,也许最简单的形式是使用Map实现,即HashMap,而不是ArrayList。
在插入循环之后,您可以通过map的values()方法获取排序列表。
答案 2 :(得分:0)
您可以通过实施Comparable<T>
来使您的产品具有可比性(请参阅docs)。
完成此操作后,您必须实施compareTo(Product o)
,根据您阅读的属性对产品进行比较。请阅读文档了解更多详情。
然后您可以对数据结构进行排序,例如通过使用Arrays.sort(Object[] objs)
(转换为数组并再次进入列表应该不是问题)。
但无论如何,如果你不经常需要这种逻辑,我更喜欢使用比较器的Davide Lorenzo MARINO。如果您经常想要比较产品,请使用实施Comparable<T>
的方式。