Skocz do zawartości
Zamknięcie Forum PC LAB

Szanowny Użytkowniku,

Informujemy, że za 30 dni tj. 30 listopada 2024 r. serwis internetowy Forum PC LAB zostanie zamknięty.

Administrator Serwisu Forum PC LAB - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie: wypowiada całość usług Serwisu Forum PC LAB z zachowaniem miesięcznego okresu wypowiedzenia.

Administrator Serwisu Forum PC LAB informuje, że:

  1. Z dniem 29 listopada 2024 r. zakończy się świadczenie wszystkich usług Serwisu Forum PC LAB. Ważną przyczyną uzasadniającą wypowiedzenie jest zamknięcie Serwisu Forum PC LAB
  2. Dotychczas zamowione przez Użytkownika usługi Serwisu Forum PC LAB będą świadczone w okresie wypowiedzenia tj. do dnia 29 listopada 2024 r.
  3. Po ogłoszeniu zamknięcia Serwisu Forum od dnia 30 października 2024 r. zakładanie nowych kont w serwisie Forum PC LAB nie będzie możliwe
  4. Wraz z zamknięciem Serwisu Forum PC LAB, tj. dnia 29 listopada 2024 r. nie będzie już dostępny katalog treści Forum PC LAB. Do tego czasu Użytkownicy Forum PC LAB mają dostęp do swoich treści w zakładce "Profil", gdzie mają możliwość ich skopiowania lub archiwizowania w formie screenshotów.
  5. Administrator danych osobowych Użytkowników - Ringier Axel Springer Polska sp. z o.o. z siedzibą w Warszawie zapewnia realizację praw podmiotów danych osobowych przez cały okres świadczenia usług Serwisu Forum PC LAB. Szczegółowe informacje znajdziesz w Polityce Prywatności

Administrator informuje, iż wraz z zamknięciem Serwisu Forum PC LAB, dane osobowe Użytkowników Serwisu Forum PC LAB zostaną trwale usunięte ze względu na brak podstawy ich dalszego przetwarzania. Proces trwałego usuwania danych z kopii zapasowych może przekroczyć termin zamknięcia Forum PC LAB o kilka miesięcy. Wyjątek może stanowić przetwarzanie danych użytkownika do czasu zakończenia toczących się postepowań.

Temat został przeniesiony do archiwum

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

K_P

[Java] sortowanie listy z mapami

Rekomendowane odpowiedzi

Jak posortować listę mapList według wartości z map?

 

    Map<String, String> map1 = new HashMap<String, String>();
   map1.put("1", "8");

   Map<String, String> map2 = new HashMap<String, String>();
   map2.put("2", "6");

   Map<String, String> map3 = new HashMap<String, String>();
   map3.put("3", "10");

   List<Map<String, String>> mapList = new ArrayList<Map<String, String>>();
   mapList.add(map1);
   mapList.add(map2);
   mapList.add(map3);

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ten kod i pytanie nie mają sensu. Po co trzy jednoelementowe mapy i po co je trzymać w liście? Co chcesz zrobić?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Metoda sort?

 

Musisz dobrze określić kryterium względem którego te mapy mają być sortowane. Najlepiej od tego zacznij.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

To jest część większego problemu i niestety tak muszę to posortować, żeby nie zmieniać innych części aplikacji.

A to tylko przykład kodu do którego problem się sprowadza.

 

Wiem jak posortować jak mam takie same klucze.

 

Map<String, String> map1 = new HashMap<String, String>();
   map1.put("name", "8");

   Map<String, String> map2 = new HashMap<String, String>();
   map2.put("name", "6");

   Map<String, String> map3 = new HashMap<String, String>();
   map3.put("name", "10");

   List<Map<String, String>> mapList = new ArrayList<Map<String, String>>();
   mapList.add(map1);
   mapList.add(map2);
   mapList.add(map3);

Collections.sort(mapList, new Comparator<Map<String, String>>() {
       public int compare(final Map<String, String> o1, final Map<String, String> o2) {
           return o1.get("name").compareTo(o2.get("name"));
       }
   });

System.out.println(mapList.get(0));

 

Wiem też, że jak użyję map.entry zamiast map będę miał możliwość wywołania .getEntry które też rozwiązuj problem.

Jednak muszę użyć mapy ale nie wiem jak wskazać wartość mapy w wyszukiwaniu Collecitions.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ale to, co chcesz zrobić totalnie nie ma sensu i jest to wyraźny sygnał, że aplikacja jest do przeorania, zanim się rozsypie. Mapa jest kolekcją i może zawierać wiele elementów. A w przypadku HashMapy, której używasz, kolejność elementów jest nieznana, więc po czym sortować? Sens miałby jakiś agregat wartości (np. suma w przypadku liczb) i to mogłoby być kluczem sortowania. A twory, które pokazujesz świadczą o tym, że albo się za coś źle zabierasz, albo aplikacja nie nadaje się do dalszego rozwoju.

 

 

Akurat w Twoim przykładzie możesz sobie posortować wg wartości mapy tak:

 

Collections.sort(mapList, Comparator.comparing(v -> v.values().iterator().next()));

ale jest to jakiś horror, który zadziała tylko w przypadku map jednoelementowych, a autor takiego kodu powinien dostać wypowiedzenie i dożywotni zakaz wykonywania zawodu.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...