Java 如何在android中按升序或降序值对数组列表排序?

Java 如何在android中按升序或降序值对数组列表排序?,java,android,arrays,sorting,arraylist,Java,Android,Arrays,Sorting,Arraylist,我的数组列表值如下所示 [ { Distance=Distance: 16.6km, branch_desc=name 1, }, { Distance=Distance: 5.4km, branch_desc=name 2, }, { Distance=Distance: 13.4km, branch_desc=name 3, } ] 如何根据距离将数组列表按升序和降序排序。我不知道如何对数组列表进行排序。是否有人知道请帮助我解决此问题 试试这

我的数组列表值如下所示

[
{
    Distance=Distance: 16.6km,
    branch_desc=name 1,
},
{
    Distance=Distance: 5.4km,
    branch_desc=name 2,
},
{
    Distance=Distance: 13.4km,
    branch_desc=name 3,
}
]
如何根据距离将数组列表按升序和降序排序。我不知道如何对数组列表进行排序。是否有人知道请帮助我解决此问题

试试这段代码

List<List<Integer>> list = Arrays.asList(Arrays.asList(10, 5, 4), 
        Arrays.asList(1, 2, 3), Arrays.asList(5, 6, 7));
    for (List<Integer> l : list) {
    Collections.sort(l);
    }

Collections.sort(list, new Comparator<List<Integer>>() {
    public int compare(List<Integer> o1, List<Integer> o2) {
        return o1.get(0).compareTo(o2.get(0));
    }
});
System.out.println(list);
List List=Arrays.asList(Arrays.asList(10,5,4),
Arrays.asList(1,2,3),Arrays.asList(5,6,7));
对于(列表l:列表){
集合。排序(l);
}
Collections.sort(list,newcomparator(){
公共整数比较(列表o1,列表o2){
返回o1.get(0),与(o2.get(0))进行比较;
}
});
系统输出打印项次(列表);
字符串排序

Collections.sort(list, new Comparator<String>() {
        @Override
        public int compare(String s1, String s2) {
            return s1.compareToIgnoreCase(s2);
        }
    });
Collections.sort(列表,新比较器(){
@凌驾
公共整数比较(字符串s1、字符串s2){
返回s1.compareToIgnoreCase(s2);
}
});
请参阅。它帮助您对实现的
T
的任何列表进行排序

如果您的类没有实现Comparable,那么可以提供一个Comparator和调用

一个小类的示例:

public class Item implements Comparable<Item>{

  private Integer number;
  private Double distance;

  //Getters & Setters
  ...

  @Override
  public int compareTo(Item o) {
    return this.distance > o.distance? -1 : 1;
  }
}
公共类项实现可比较{
私有整数;
私人双倍距离;
//接球手和接球手
...
@凌驾
公共整数比较(o项){
返回此值。距离>o。距离?-1:1;
}
}
由于它实现了Comparable,您可以对列表进行如下排序:

List<Item> myItemList = ... ;
Collections.sort(myItemList);
//Now, myItemList is sorted
List myItemList=;
Collections.sort(myItemList);
//现在,myItemList已排序
您可以提供一个比较器,根据任何标准对项目进行排序:

List<Item> list = ...;
//Here, I provide a Comparator to sort Items by number.
Collections.sort(list, new Comparator<Item>() {
  @Override
  public int compare(Item o1, Item o2) {
    return o2.getNumber() - o1.getNumber();
  }
});
List=。。。;
//这里,我提供了一个比较器来按数字对项目进行排序。
Collections.sort(list,newcomparator(){
@凌驾
公共整数比较(项目o1、项目o2){
返回o2.getNumber()-o1.getNumber();
}
});

我建议您创建一个专用的
比较器
类扩展。 您可以选择是创建单个类并使用布尔值指定是升序还是降序,还是为每个顺序创建一个类

差异将存在于的实现中,因为这是您实际将对象与您选择的标准进行比较的地方,在您的情况下,这是字段
距离
的值。 然后调用对
ArrayList
进行排序

使用单个类

MyComparator comp = ... // You can even pass the boolean at instanciation
comp.setAscending(true); // 'false' for descending

Collections.sort(list, comp); // Sort is performed - order depends on boolean
AscendingComparator comp1 ...
DescendingComparator comp2 ...

Collections.sort(list, comp1); // Sort ascending
Collections.sort(list, comp2); // Sort descending
使用两个casse

MyComparator comp = ... // You can even pass the boolean at instanciation
comp.setAscending(true); // 'false' for descending

Collections.sort(list, comp); // Sort is performed - order depends on boolean
AscendingComparator comp1 ...
DescendingComparator comp2 ...

Collections.sort(list, comp1); // Sort ascending
Collections.sort(list, comp2); // Sort descending

您是否尝试过Collection.sort()?*Collections:不要忘记
s
@ArnaudDenoyelle不,我不知道怎么做。@上面的PankajKumar是一个数组列表,不是一个j-son数组。@Yugesh那么请提供有关元素类型的更多信息。你能给出类定义吗?如何在这个比较中使用哈希映射数组列表你指的是
ArrayList
HashMap
?我从j-son那里得到值,放入哈希映射,然后我在数组列表中添加哈希映射值。要对
ArrayList
进行排序,只需使用上面的代码,将列表替换为
ArrayList
。当然,您必须至少编写一个Comparator类才能进行排序。要对
HashMap
进行排序,您似乎必须使用,这实际上与我给您的代码非常相似。如何使用Comparator对HashMap数组列表进行排序。