Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,按字符串属性对类数组排序_Java_Android_Arrays_Sorting - Fatal编程技术网

在Java中,按字符串属性对类数组排序

在Java中,按字符串属性对类数组排序,java,android,arrays,sorting,Java,Android,Arrays,Sorting,我需要按字母顺序对由自定义类用户的实例组成的数组User[]contactList进行排序,并使用内置的String属性。我的意思是,例如,我的类用户是: public class User{ String firstName; public User(String firstName){ this.firstName = firstName; } } 如果我的阵列联系人列表由以下项目组成: 联系人列表[0]的名字为Maria 联系人列表[1

我需要按字母顺序对由自定义类用户的实例组成的数组User[]contactList进行排序,并使用内置的String属性。我的意思是,例如,我的类用户是:

public class User{
    String firstName;
    
    public User(String firstName){
        this.firstName = firstName; 
    }
}
如果我的阵列联系人列表由以下项目组成:

联系人列表[0]的名字为Maria

联系人列表[1]的firstName=Andrew

联系人列表[2]的名字为Joey

我想按名字的字母顺序排序,结果应该是:

sortedList[0]的firstName=Andrew

sortedList[1]应该有firstName=Joey

sortedList[2]应该有firstName=Maria

我如何在Java Android中实现这一点

编辑1:我不能在我的项目中使用lambda表达式,因为我在Android Studio中使用Java 7


编辑2:我也不能修改用户类。我在这个问题中对其进行了简化,但该类是API的内置类。

对于Java 8,使用lambda表达式和数组排序函数:

Users[] someUsers = {user1, user2, user3};
Arrays.sort(someUsers, (a,b) -> a.firstName.compareTo(b.firstName));
对于以前的版本,请使用集合比较器:

Users[] someUsers = {user1, user2, user3};
List<Users> userList = new ArrayList<Users>(Arrays.asList(someUsers));
Comparator<Users> comparator = new Comparator<Users>() {
    @Override
    public int compare(Users left, Users right) {
        return left.firstName.compareTo(right.firstName);
    }
};
Collections.sort(userList, comparator);
可以对数组使用Arrays.sort对其进行排序。但是,该方法无法知道如何对用户进行排序。要实现这一点,需要实现Comparable接口,然后让compareTo方法将比较委托给firstName字段:


现在,您可以简单地使用Arrays.sort对数组进行排序。

在Java Android中如何实现这一点?通过做研究,在这里搜索,回顾JDK的JavaDoc,并尝试一下。如果你做了所有这些,并遇到了一个特定的问题,张贴一个问题与您的代码和描述的具体问题。人们会很乐意帮忙的。啊哈。但事实上,这是一个具体的问题。为了让它更直观,我简化了很多。我以前做过研究,但没有找到解决办法。哦,拉另一个,它有腿。在整个web上都找不到关于如何在Java中对数组进行排序的信息?胡说八道。试试这个:重复的,可能还有十几个。似乎我不能使用lambda表达式,因为我在Android Studio项目中没有使用Java 8。lambda表达式在此语言级别不受支持。。。还有其他方法可以实现吗?我已经更新了答案,包括对旧版本的JavaI使用比较器。问题是我无法更新用户类,因为它是API的内置类:
public static class User implements Comparable<User>{
  String firstName;
  public User(String firstName){
    this.firstName = firstName; 
  }
  @Override
  public int compareTo(User o) {
    return firstName.compareTo(o.firstName);
  }
}