Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Сортировка LinkedList по ключу / 1 сообщений из 1, страница 1 из 1
08.10.2014, 17:33
    #38770739
TepKuH
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка LinkedList по ключу
Коллеги,
Весь мозг сломал подмогите плиз мне с сортировкой, нужны выстроить элементы так чтобы
предыдущий был связан с текущим либо по либо по левому элементу либо по правому т.е. цепочой без разрывов
Например есть массив:
Код: java
1.
2.
3.
key1:key2
key4:key2
key1:key3



Нужно чтобы получилось что то типа:
Код: java
1.
2.
3.
key1:key3
key1:key2
key4:key2



Причем key и value могут в таких массивах меняться местами, например может быть таким
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
public class myTest {
    public static void main(String a[]){
        Comparator<Empl> relationshipComparator = new Comparator<Empl>(){

            public int compare(Empl e1, Empl e2) {
                String e1Left = e1.getLeft();
                String e1Right = e1.getRight();

                String e2Left = e2.getLeft();
                String e2Right = e2.getRight();
                if (
                        e1Left.equals(e2Left) ||
                        e1Left.equals(e2Right) ||
                        e1Right.equals(e2Left) ||
                        e1Right.equals(e2Right))
                {
                    return 0;

                }else {
                    return -1;
                }
            }
        };

        LinkedList<Empl> list = new LinkedList<Empl>();
        list.add(new Empl("key1", "key2"));
        list.add(new Empl("key4", "key2"));
        list.add(new Empl("key1", "key3"));

        System.out.println("after: ");
        for(Empl e:list){
            System.out.println(e.getLeft()+":"+e.getRight());
        }
        Collections.sort(list,relationshipComparator);
        System.out.println();
        System.out.println("before: ");
        for(Empl e:list){
            System.out.println(e.getLeft()+":"+e.getRight());
        }
    }

}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
public class Empl {
    private String left;
    private String right;

    public Empl (String left, String right){
        this.left=left;
        this.right=right;
    }

    public String getLeft() {
        return left;
    }

    public void setLeft(String left) {
        this.left = left;
    }

    public String getRight() {
        return right;
    }

    public void setRight(String right) {
        this.right = right;
    }
}



Вот что у меня есть:
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Сортировка LinkedList по ключу / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]