Java 使用数组中的对象
我有一个有几百行的文本文件。看起来是这样的: unitName unitPackage单价。我得整理一下,总结一下。例如,我们得到了以下四行:Java 使用数组中的对象,java,Java,我有一个有几百行的文本文件。看起来是这样的: unitName unitPackage单价。我得整理一下,总结一下。例如,我们得到了以下四行: 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 我的想法是创建product类(String uni
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
我的想法是创建product类(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);
}
List products=new ArrayList();
while(inputFile.hasNextLine()){
Product Product=新产品(inputFile.next(),inputFile.next(),inputFile.nextDouble());
产品。添加(产品);
}
直到那一刻一切都很好,但我不知道该如何处理。这样做总的来说是个好主意?请提供建议。如果需要对列表进行排序,可以使用类
集合中的排序方法
public static <T> void sort(List<T> list,
Comparator<? super T> c)
有许多方法可以对数组列表进行排序。在您将每个项目放入列表的特定情况下,最简单的形式可能是使用映射实现,即HashMap,而不是ArrayList
在插入循环之后,您可以通过映射的values()方法获得排序列表。您可以通过实现compariable
(请参阅)使您的产品具有可比性。
完成此操作后,您必须实现compareTo(产品o)
,它根据您读取的属性对您的产品进行比较。请阅读文档了解更多详细信息
然后,您可以对数据结构进行排序,例如使用array.sort(Object[]objs)
(再次转换为数组和列表应该不会有问题)
但无论如何,我更喜欢大卫·洛伦佐·马里诺(Davide Lorenzo MARINO)使用比较器的方法,如果你不经常需要这种逻辑的话。如果您经常想要比较产品,那么使用实现compariable
排序的方法肯定不是最好的方法。您只是对值进行分组,顺序似乎并不重要。使用HashMap
按(unitName,unitPackage)
对条目进行分组应该可以获得更好的性能。请正确设置问题的格式。
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