【问题标题】:java - alphabetical order (list) [duplicate]java - 按字母顺序(列表)[重复]
【发布时间】:2011-05-29 23:21:33
【问题描述】:

可能重复:
Sort List Alphabetically

如何按字母顺序存储我的输入,我将名称输入到数组列表中:

    persons.add(person);

怎么做?

【问题讨论】:

标签: java arraylist alphabetical


【解决方案1】:

使用 TreeSet 代替 ArrayList

【讨论】:

  • 不,问题是我必须使用 ArrayList,因为我必须学习它。
  • 这不是一个很好的答案。 TreeSet 是一个集合,而不是一个列表。如果他盲目地遵循这个答案,他可能会在不知道原因的情况下陷入问题(尤其是不再有重复的元素)。
  • 问题是如何按字母顺序存储元素,问题中对集合没有限制。他使用数组列表这一事实并不意味着什么。
【解决方案2】:

试试这个:

 java.util.Collections.sort(people);

【讨论】:

    【解决方案3】:
    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() 方法!你在说什么编程语言?
    • 我的错,它的 Collections.sort(listPeople);
    • 很奇怪。如果我从命令行编译,我只会得到这个错误——在 Eclipse 中 ArrayList 完全有一个 .sort 方法。可能是版本问题?
    • 在 Java 7 中,ArrayList 没有排序方法。在 Java 8 中,它有。
    【解决方案4】:

    实现Comparator&lt; T &gt;接口

    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(/* list here */, /* comparator here*/)

    【讨论】:

      猜你喜欢
      • 2014-12-21
      • 1970-01-01
      • 2017-12-19
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 2018-09-15
      • 2015-04-07
      相关资源
      最近更新 更多