Внедрение алфавитной сортировки в список, равное переопределению невозможно - PullRequest
1 голос
/ 01 марта 2011

У меня есть список объектов для сортировки по атрибуту в алфавитном порядке.Я не могу переопределить метод equals для этого объекта, потому что это сгенерированный класс, моя реализация будет удалена в следующем поколенииЯ думаю, что я буду реализовывать этот вид в классе инструментов.Есть ли способ не изобретать велосипед?

Ответы [ 4 ]

4 голосов
/ 01 марта 2011

Использовать пользовательские Comparator

class A{
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public A() {
    }

    public A(String name) {
        this.name = name;
    }

}
List<A> aList = new ArrayList<A>();
aList.add(new A("abc"));
aList.add(new A("sda"));
aList.add(new A("aaa"));
Collections.sort(aList,new Comparator<A>() {

            public int compare(A o1, A o2) {
                return o1.getName().compareTo(o2.getName());
            }
});
2 голосов
/ 01 марта 2011

Что-то вроде:

class Foo {
    public String field;
}

public static void main(String[] args) {
    List<Foo> foos = new ArrayList<Foo>();

            ....        

    Collections.sort(foos, new Comparator<Foo>() {
        @Override
        public int compare(Foo o1, Foo o2) {
            return o1.field.compareTo(o2.field);
        }
    });
}
0 голосов
/ 01 марта 2011

вы можете использовать компаратор, скажем, вы сортируете список (myList) из Person с их алфавитным именем (getName()).

List<Person> myList = new ArrayList<Person>(keys);
Collections.sort(myList, new Comparator<Person>() {
  @Override
  public int compare(Person p1, Person p2) {
    String s1 = p1.getName();
    String s2 = p2.getName();
    return s1.compareTo(s2);
  }     
}); 
0 голосов
/ 01 марта 2011

Вы можете взглянуть на API .Вам нужно только внедрить компаратор для сравнения ваших атрибутов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...