最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

通过内部数组的字段之一对多维数组进行排序

SEO心得admin51浏览0评论
本文介绍了通过内部数组的字段之一对多维数组进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

如何按内部数组的字段之一对多维数组排序?

How do I sort a multidimensional array by one of the fields of the inner array?

在Java中,如何创建这样的多维数组?以及如何按X字段对其进行排序?有例子吗?

In Java, How I can create a multidimensional array like this? and how I can sort it by X field? Any examples?

Array ( [0] => Array ( [name] => Sony TV [price] => 600.00 ) [1] => Array ( [name] => LG TV [price] => 350.00 ) [2] => Array ( [name] => Samsung TV [price] => 425.00 ) }

推荐答案

您拥有的东西根本看起来并不像多维数组(嗯,它看起来像PHP多维数组,而不是Java多维数组),而是对象数组,其中每个对象都有一个名称"和一个价格"字段.

What you have doesn't look like a multidimensional array at all (well, it looks like a PHP multidimensional array, but not a Java one), but rather an array of objects, where each object has a "name" and a "price" field.

在这种情况下,您应该首先创建对象的类.我们称之为Product:

In these case you should first create your object's class. Let's call it 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 namepareTo(other.name); } /* Other methods. */ /* Getters and setters for price and name. */ }

您会注意到该类实现了 ,并具有方法compareTo.这意味着可以订购产品的集合.然后,将Product放入数组中,并使用Arrays.sort()方法对其进行排序:

You'll notice that this class implements Comparable<Product> and has a method compareTo. This means that a collection of products can be ordered. Then, you put your Products into an array and you use the Arrays.sort() method to sort it:

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);

编辑:我错过了您想要按任何字段进行排序的事实.在这种情况下,您需要比较器.每个字段需要一个:

I missed the fact that you wanted to sort by any field. In this case, you need Comparators. You'll need one per field:

Comparator<Product> nameComparator = new Comparator<Product>() { @Override int compare(final Product p1, final Product p2) { return p1.getName()pareTo(p2.getName()); }; Comparator<Product> priceComparator = new Comparator<Product>() { @Override int compare(final Product p1, final Product p2) { return p1.getPrice()pareTo(p2.getPrice()); };

然后,只需将您的比较器提供给Array.sort()方法:

Then, just give your comparators to the Array.sort() method:

Arrays.sort(products, nameComparator); /* or */ Arrays.sort(products, priceComparator);
发布评论

评论列表(0)

  1. 暂无评论