Java: Отсортируйте Набор с помощью CollatorKey

То, что я обычно делаю,

print("SELECT column1, column2
       FROM table1
       WHERE column3 IN (SELECT TOP(1) column4
                         FROM table2 INNER JOIN 
                              table3 ON table2.column1 = table3.column1)");
7
задан jan 14 September 2009 в 19:41
поделиться

3 ответа

class Person implements Comparable<Person> {

  private static final Collator collator = Collator.getInstance(Locale.ITALY);

  private final String lastname;

  private final CollationKey key;

  Person(String lastname) {
    this.lastname = lastname;
    this.key = collator.getCollationKey(lastname);
  }

  public int compareTo(Person person) {
     return key.compareTo(person.key);
  }

}
13
ответ дан 6 December 2019 в 23:10
поделиться
  1. Создайте SortedMap m, где T - это тип объектов, которые вы хотите отсортировать, используя CollationKeys . Вы можете использовать TreeMap в качестве реализации
  2. Для каждого элемента e, который вы хотите отсортировать, m.put (collator.getCollationKey (e. {GetStringYouWantToSortOn}), e);

Итерация over m.values ​​() должен давать ваши объекты, отсортированные по нужной строке с помощью CollationKeys .

Я считаю, что это неэффективно, но должно работать.

0
ответ дан 6 December 2019 в 23:10
поделиться

use a Comparator instead of making Person Comparable. your Comparator can take 2 Persion instances and compare them based on some Collator instance. then call

Collections.sort(list, myPersonComparator);
-2
ответ дан 6 December 2019 в 23:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: