【问题标题】:Sorting The ArrayList in Android [closed]在Android中对ArrayList进行排序[关闭]
【发布时间】:2014-02-18 08:26:00
【问题描述】:

我有 3 个数组列表,例如 list1list2list3

list1={ram,kevin,sachin,akshay,salman};
list2={111111111,22222222,3333333333,4444444444,5555555555};
list3={ram@gmail.com,kevin@gmail.com,sachin@gmail.com,akshay@gmail.com,salman@gmail.com};

我想按字母顺序对list1 进行排序,我需要其他列表根据list1 进行排序。

【问题讨论】:

  • 对这 3 个属性使用 POJO。似乎是姓名、电子邮件、身份证
  • 为什么没有 一个 列表,其中包含具有这 3 个属性的自定义元素?

标签: java android sorting arraylist


【解决方案1】:

对一个列表进行排序并根据该排序顺序更新其他列表非常麻烦,因为您必须将元素的新索引与旧索引匹配,并使用两者来更新其他列表。

在某些情况下这是必要的,我会用一些中间地图来解决这个问题,但在大多数情况下,包括你的,我只是为数据创建一个对象并将它们放入一个列表中,例如:

class User {
  String name;
  int id;
  String email;
}

List<User> list = ...;

Collections.sort( list, new Comparator<User>() {
  public int compare( User lhs, User rhs ) {
    return lhs.name.compareTo(rhs.name); 
  }
});

请注意,我故意省略了构造函数或 null 检查等内容,以便将代码简化为基本部分。

【讨论】:

    【解决方案2】:

    这样做会更容易(根据上面的建议):

    public class User implements Comparable<User>
    {
        private String name;
        private String ID;
        private String email;
    
        public int compare(User u1)
        {
             return this.getName().compareTo(u1.getName());
        }
    }
    
    ...
    
    List<User> users = ...
    Collections.sort(users);
    

    上面的代码应该通过将name作为排序参数对Lexicographical Order中的元素进行排序。

    【讨论】:

    • implements Comparator 我猜你的意思是implements Comparable,因此是public int compareTo( User other )
    • @Thomas:是的,你是对的。改变了谢谢:)
    • @Keppil:是的,你是对的。改变了谢谢:)
    【解决方案3】:

    使用Comparator。在那里,您可以定义要比较的内容以及如何比较,在 compare() 方法中,您可以定义应该从两个实例返回的内容。这是String Comparator 的示例。

    new Comparator<String>() {
      public int compare(final String user1, final String user2) {
        // This would return the ASCII representation of the first character of each string
        return (int) user2.charAt(0) - (int) user1.charAt(0);
      };
    };
    

    【讨论】:

      猜你喜欢
      • 2016-08-13
      • 2016-11-16
      • 2017-03-15
      • 2018-05-07
      • 2018-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-16
      相关资源
      最近更新 更多