воскресенье, 14 февраля 2010 г.

TreeSet

На лекции у меня не получилось продемонстрировать возможности TreeSet и я сказал что он особо не используется, по вчера у меня возникла ситуация когда логично объекты нужно хранить в отсортированном порядке, первой мыслю было использовать List и сортировать его, но на каком этапе это делать? На помощь мне пришел TreeSet.

Итак, как же им пользоваться?
Напишем элементарный пример

public class MyClass implements Comparable {
    String str;
    public MyClass(String str) {
        this.str = str;
    }
    @Override
    public int compareTo(MyClass o) {
        return str.compareTo(o.str);
    }
    public static void main(String[] args) {
        Set ss = new TreeSet();
        ss.add(new MyClass("a"));
        ss.add(new MyClass("e"));
        ss.add(new MyClass("g"));
        ss.add(new MyClass("b"));
        ss.add(new MyClass("c"));
        for(MyClass s : ss){
            System.out.println(s.str);
        }
    }
}

Теперь объясню все это.

TreeSet работает вполне логично, туда добавляются классы и она их хранит в отсортированном порядке, нюанс тут в том, что для нужного нам порядка сортировки нежно реализовать интерфейс Comparable, или передать в конструктор класс, реализующий интерфейс Comparator, о них я напишу сегодня позже.

2 комментария:

  1. "нежно реализовать интерфейс"
    Это жесть, рука вздрогнула править.

    ОтветитьУдалить
  2. Этот комментарий был удален автором.

    ОтветитьУдалить