0

在android中,如何根据优先级对单行中的多个值进行排序,类似于Excel中的Sort功能?

Map<String,String,Float,Integer> shoes; // Style, Color, Price, Quantity
shoes.put("Boots","Red",15.50,5);
shoes.put("Boots","Green",17.50,2);
shoes.put("Skate","Red",12.25,6);
shoes.put("Skate","Blue",13.05,9);
shoes.Sort(1,0,2,3); // sorts by color, then by style

shoes.Sort(2,0,1,3); // sorts by price, then by style
4

2 回答 2

0

Kae 提出的建议是正确的,但是,您可以执行以下操作:

  1. 创建一个实现接口 Comparator 的类(内部或非内部),它应该作为与您要比较的内容相关的推断类型。
  2. 使用与 Map 相同的规范和 Comparator 作为参数创建一个新的 TreeSet
  3. 将所有对象放入创建的树集。

看这个线程:Sort a Map<Key, Value> by values (Java)

但同样,您应该考虑根据需要创建一个类。

[]s 内托

于 2012-10-11T21:45:55.897 回答
0

这里有一个很好的示例代码块,涵盖了设置通用比较器。对多列进行排序将需要多次调用,但它会产生预期的效果。来自集合规范

This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.

所以你从鞋子开始

public class Shoe
{
  String style;
  String color;
  float price;//There are some reasons to not use float for money, google has lots of blogs etc
  int quantity;
}

然后根据上面链接的教程制作比较器,最终:

ArrayList<Shoe> shoes = makeShoes();
Collections.sort(shoes,col1Comparator);
Collections.sort(shoes,col2Comparator);
Collections.sort(shoes,col3Comparator);
于 2012-10-11T22:50:51.770 回答