сортировка по списку - PullRequest
       13

сортировка по списку

0 голосов
/ 01 июля 2011

У меня есть два архива, один из которых имеет список сущностей сотрудников, другой также имеет тот же список сущностей.

один Arraylist имеет всех сотрудников, а другой выбрал сотрудников.

Теперь я хочу расположить сотрудника в списке в первом списке Arraylist, так как в первый раз появляются выбранные сотрудники, которые находятся во втором списке Arraylist.

для Ex ::

list1 [{1,test1}{2,test2},{3,test3},{4,test4}]
list2[{2,test2}{4,test4}]

что я хочу это

list1[{2,test2}{4,test4}{1,test1}{3,test3}]

Как я могу сделать то же самое, используя один метод или минимальный код строки ..

Ответы [ 4 ]

3 голосов
/ 01 июля 2011

Из того, что вы сказали, кажется, что вам просто нужно взять членов list1, которых нет в list2, и добавить их к list2 в порядке их появления в list1.

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

for ( Employee e : list1 ) {
  if ( !list2.contains(e) ) {
    list2.append(e);
  }
}
1 голос
/ 01 июля 2011

Вы можете использовать Apache CollectionUtils , например:

CollectionUtils.addAll(list2, CollectionUtils.subtract(list1, list2));
1 голос
/ 01 июля 2011

Почему бы не использовать Collections.sort(list1, yourComparator), где yourComparator сортирует записи в list1, как вам нужно?

0 голосов
/ 01 июля 2011

Вам даже не нужен цикл или компаратор. Просто используйте API коллекций!

  1. Во-первых, вы хотите LinkedHashSet - сохраняет уникальность и порядка
  2. Используйте API для добавления list2, затем list2, затем заполните список набором:

Вот пример использования целых чисел:

    // Set up your data
    List<Integer> l1 = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));
    List<Integer> l2 = new ArrayList<Integer>(Arrays.asList(2, 5));

    // Here's the 3 lines that do the work
    Set<Integer> set = new LinkedHashSet<Integer>(l2);
    set.addAll(l1);
    List<Integer> l3 = new ArrayList<Integer>(set);

    // All done
    System.out.println(l3);  // "[2, 5, 1, 3, 4]"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...