你所拥有的根本不像一个多维数组(嗯,它看起来像一个 PHP 多维数组,但不是 Java 数组),而是一个对象数组,其中每个对象都有一个“名称”和一个“价格” “ 场地。
在这些情况下,您应该首先创建对象的类。让我们称之为Product
:
public class Product implements Comparable<Product> {
private String name;
private BigDecimal price;
public Product(final String name, final BigDecimal price) {
this.name = name;
this.price = price;
}
@Override
public int compareTo(final Product other) {
return name.compareTo(other.name);
}
/* Other methods. */
/* Getters and setters for price and name. */
}
你会注意到这个类实现Comparable<Product>
并有一个方法compareTo
。这意味着可以订购一系列产品。然后,将Product
s 放入一个数组中,并使用 Arrays.sort() 方法对其进行排序:
Product[] products = new Product[3];
products[0] = new Product("Sony TV", new BigDecimal("600.00"));
products[1] = new Product("LG TV", new BigDecimal("350.00"));
products[2] = new Product("Samsung TV", new BigDecimal("425.00"));
Arrays.sort(products);
编辑:我错过了您想按任何字段排序的事实。在这种情况下,您需要比较器。每个字段都需要一个:
Comparator<Product> nameComparator = new Comparator<Product>() {
@Override
int compare(final Product p1, final Product p2) {
return p1.getName().compareTo(p2.getName());
};
Comparator<Product> priceComparator = new Comparator<Product>() {
@Override
int compare(final Product p1, final Product p2) {
return p1.getPrice().compareTo(p2.getPrice());
};
然后,只需将您的比较器提供给该Array.sort()
方法:
Arrays.sort(products, nameComparator);
/* or */
Arrays.sort(products, priceComparator);