コード例 #1
0
 private static <E extends ArrangementEntry> void sortByName(@NotNull List<E> entries) {
   if (entries.size() < 2) {
     return;
   }
   final TObjectIntHashMap<E> weights = new TObjectIntHashMap<E>();
   int i = 0;
   for (E e : entries) {
     weights.put(e, ++i);
   }
   ContainerUtil.sort(
       entries,
       new Comparator<E>() {
         @Override
         public int compare(E e1, E e2) {
           String name1 =
               e1 instanceof NameAwareArrangementEntry
                   ? ((NameAwareArrangementEntry) e1).getName()
                   : null;
           String name2 =
               e2 instanceof NameAwareArrangementEntry
                   ? ((NameAwareArrangementEntry) e2).getName()
                   : null;
           if (name1 != null && name2 != null) {
             return name1.compareTo(name2);
           } else if (name1 == null && name2 == null) {
             return weights.get(e1) - weights.get(e2);
           } else if (name2 == null) {
             return -1;
           } else {
             return 1;
           }
         }
       });
 }