1 Востаннє редагувалося Oleshko (31.08.2015 15:14:08)

Тема: Сортування колекції

Добрий день. Код програми:
[code=java]import java.util.*;

class Collect {
    public static void main(String[] args) {
        Collection<Children> str = new ArrayList<>();

        a.add(new Children("Oleh",6));
        a.add(new Children("Ivan",3));
        a.add(new Children("Stepan",4));

        Collections.sort(a);

        for(Children i: a)
        System.out.printl(i.toString());
    }
}[/code]

[code=java]class Children {

    private String name;
    private int age;

    Children(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String toString() {
        return name+age;
    }
}[/code]
Проблема в рядку:

Collections.sort(a);

Який параметр передати щоб діти сортувалися по віку?

2

Re: Сортування колекції

Java - це вам не python, тут трохи важче. Насамперед, реалізувати інтерфейс Comparable потрібно (метод compareTo). Чому буду писати - ось повинно наштовхнути на правильну думку - http://stackoverflow.com/questions/2784 … y-property

Подякували: koala1

3

Re: Сортування колекції

Добре, дякую, буду думати)

4 Востаннє редагувалося quez (31.08.2015 15:57:07)

Re: Сортування колекції

Судячи по вже другій схожій темі, вам ніхто не розказав про те, що можна читати документацію.

Тут можна прочитати, що при використанні метода sort є два варіанти: або передавати йому колекцію об'єктів, в яких реалізований інтерфейс Comparable, або разом з колекцією передавати Comparator, в якому визначити, як сортувати елементи колекції. Я передавав би Comparator, тому що крім сортування за віком дітей можна сортувати по імені, але це більше справа смаку, як на мене.

Подякували: Master_Sergius, Oleshko2

5 Востаннє редагувалося Oleshko (31.08.2015 18:42:12)

Re: Сортування колекції

Я зробив ось так:
[code=java]
class Children implements Comparable<Children>
{
    ...

    public int compareTo(Children o)
    {
        return Integer.compare(age, o.age);
    }
}
[/code]
Але я не зрозумів, як передати Comparator?

6

Re: Сортування колекції

Oleshko написав:

Але я не зрозумів, як передати Comparator?

Вам ж Master_Sergius дав посилання, подивітся та почитайте там все це э.

7

Re: Сортування колекції

Oleshko написав:

Я зробив ось так:
[code=java]
class Children implements Comparable<Children>
{
    ...

    public int compareTo(Children o)
    {
        return Integer.compare(age, o.age);
    }
}
[/code]
Але я не зрозумів, як передати Comparator?

А нащо вам його передавати? Ваш клас тепер Comparable, передавайте тільки колекцію.

Подякували: Oleshko1

8

Re: Сортування колекції

Єдине що sort вимагає не Collection, а List, а так у мене все працює.