Java 使用数组中的对象

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

我有一个有几百行的文本文件。看起来是这样的: 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 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