Java - 按字母顺序排序(列表)

4

可能重复:
按字母顺序排序列表

我如何将我的输入按字母顺序存储,我正在将名称输入到ArrayList中:

    persons.add(person);

如何做到这一点?

只需使用集合的Sort方法,其中传递人员列表即可。 - user284291
为什么你们不一起做作业呢:https://dev59.com/-HI-5IYBdhLWcg3wQV4Z。这是一个社交活动 :) - Lukas Eder
4个回答

9

实现 Comparator< T > 接口

class A implements Comparator < Person > {

    @Override
    public int compare(Person o1, Person o2) {
        if(o1.getName() != null && o2.getName() != null){
            return o1.getName().compareTo(o2.getName());
        }

        return 0;
    }

}

然后使用Collections.sort(/*在此处输入列表*/, /*在此处输入比较器*/)

5

试试这个:

 java.util.Collections.sort(people);

5
Collection<Person> listPeople = new ArrayList<Person>();

Person.java类将实现Comparable接口。

public class Person implements Comparable<Person>{

public int compareTo(Person person) {
  if(this.name != null && person.name != null){
   return this.name.compareToIgnoreCase(person.name);
  }
  return 0;
 }

}

一旦你拥有这个,当你在添加人员时,在完成添加后,输入:

Collections.sort(listPeople);

java.util.ArrayList()没有提供sort()方法!你在谈论哪种编程语言? - Gerhard Presser
我的错,应该是Collections.sort(listPeople); - Gondim
奇怪。只有在命令行编译时才会出现这个错误 - 在Eclipse中,ArrayList完全有一个.sort方法。也许这是一个版本问题? - BrainSlugs83
在Java 7中,ArrayList没有sort方法。但在Java 8中,它已经被添加了。 - Dayong

0

使用TreeSet而不是ArrayList


2
不,问题是我必须使用ArrayList因为我需要学习它。 - Jake
3
那不是一个很好的回答。TreeSet是一个集合,而不是一个列表。如果他盲目地遵循这个答案,可能会遇到问题(特别是没有重复元素),却不知道为什么会出现这个问题。 - Valentin Rocher
问题是如何按字母顺序存储元素,问题中对集合没有任何限制。他使用数组列表并不意味着什么。 - Vladimir Ivanov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接