PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да пренаредите елементите в списъка според даден модел?

Мисля, че трябва да преподредите резултата от заявката в код:

public static void main(String[] args) {

    List<Integer> ids = Arrays.asList(5, 3, 2, 4, 1, 6);
    List<Foo> results = Arrays.asList(new Foo(1), new Foo(8), new Foo(2), new Foo(4), new Foo(5), new Foo(7));

    System.out.println("sortResults1: " + sortResults1(ids, results));
    System.out.println("sortResults2: " + sortResults2(ids, results));
}

private static List<Foo> sortResults1(List<Integer> ids, List<Foo> results) {
    Foo[] sortedResultsArray = new Foo[ids.size()];
    for (Foo result : results) {
        // look up the required position of this result's id 
        int pos = ids.indexOf(result.getId());
        if (pos >= 0) {
            sortedResultsArray[pos] = result;
        }
    }
    List<Foo> sortedResults = new ArrayList<>(Arrays.asList(sortedResultsArray));
    sortedResults.removeAll(Collections.singleton(null));
    return sortedResults;
}

private static List<Foo> sortResults2(List<Integer> ids, List<Foo> results) {
    Collections.sort(results, Comparator.comparingInt(item -> ids.indexOf(item.getId())));
    return results;
}

Първото решение пропуска всички резултати с идентификатор, който не се среща в списъка с идентификатори.

Второто решение с компаратора поставя всички резултати с неизвестни идентификатори в началото на списъка с резултати.

Изход:

Забележка:Намерих подобен въпрос тук:Сортиране на ( Array)Списък с определен ред Има разумен отговор с TreeMap.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Мога ли да „прекомпилирам“ таблица, връщаща функции, след като тази таблица е ALTER-ed по време на миграцията на база данни?

  2. Как да върна резултата от функция postgresql в c#? Изходът на конзолата е празен

  3. Postgres:използване на времеви клейма за страниране

  4. Как date_part() работи в PostgreSQL

  5. Присъединете се към заявка за броене на generate_series() и извлечете нулеви стойности като '0'