• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Podział HashMap na dwie różne zmienne na podstawie wartości

Aruba Cloud - Virtual Private Server VPS
+1 głos
204 wizyt
pytanie zadane 29 stycznia 2022 w Java przez Bakkit Dyskutant (7,600 p.)
edycja 29 stycznia 2022 przez Bakkit

Cześć.

Mam zmienną typu HashMap, na potrzeby pytania załóżmy, że to będzie:

HashMap<NAZWA_KIEROWCY, ENUM.MARKA>

z czego wartość może występować tylko w dwóch wariantach: "Mercedes" lub "BMW".

Chciałbym na jej podstawie utworzyć dwie nowe kolekcje: jedna zawierająca tylko kierowców BMW, a drugą tylko zawierającą kierowców Mercedesa.

Jak tego dokonać? Nie ma dla mnie znaczenia czy finalne zmienne będą typu List, Array, czy Collection.

 

@edit

Zauważyłem, że w dalszej części mojego programu potrzebuje jedynie ilość kierowców BMW i ilość kierowców Mercedesa, więc jeśli istnieje możliwość zliczenia ich już dzięki samej HashMapie to prosiłbym o jakiś przykład.

1 odpowiedź

+2 głosów
odpowiedź 29 stycznia 2022 przez Wiciorny Ekspert (280,450 p.)
wybrane 30 stycznia 2022 przez Bakkit
 
Najlepsza
napisz fragment kodu ... bo za Ciebie tutaj nikt gotowca nie będzie robił- o problem jest banalny.
rozbić skorzystają z Map.Entry -> iterować po wartościach -> i sumować do tablicy jeśli wartość w tablicy spełnia warunek

1. Iterujemy po wartościach MARKI samochodu -> jeśli mamy daną markę, to dodajemy -> klucz  znajdujący się dla tego elementu jako Nazwe_kierowcy do mapy.

2. analogicznie jeśli warunek nie spełnia / lub spełnia inną markę to taka sama operacja

To najprostsza propozycja w rezultacie otrzymujesz listy kierowców dla MARKI X i Y ... i kolejnych
Do napisania w 5 minut, na końcu zliczas elementy tablicy -> masz ilosc
komentarz 29 stycznia 2022 przez Bakkit Dyskutant (7,600 p.)
No właśnie nie mogłem napisać kawałka kodu jeśli nie wiedziałem jak xd

Iterowanie po tablicy zaimplementowałem sobie już przed zadaniem pytania i efekt jest taki, że to działa.

Z doświadczenia z innych języków wiem, że lepiej korzystać z gotowych metod na tablicach, a nie iterowania po każdym elemencie, bo zazwyczaj są to metody szybsze niż iteracja, więc gdy zobaczyłem, że istnieje metoda na wyciąganie kluczy to pomyślałem, że może jest jakaś metoda, która wyciąga po wartościach i głównie o nią mi chodziło, i dlatego zadałem pytanie.

Nie mniej jednak dziękuję za odpowiedź.
komentarz 29 stycznia 2022 przez Wiciorny Ekspert (280,450 p.)
edycja 29 stycznia 2022 przez Wiciorny

ja nie napisalem jak masz to iterować, iterowanie to proces- gotowa metoda też korzysta z iterowania i wzorca iterator.  ja pisze algorytm co ma byc robione a jak to robisz to twoja implementacja, to mozna w strumieniu zapisac w 4 linijkach twoj problem ;] no moze w 5 bo dlugie nazwy
btw. to dobre masz doświadczenie skoro nie wiesz, że gotowe metody też iterują :D ...
Wskazówka: skrócić do kilku lini i paru operacji możesz korzystając z filtrowania/mapowania na strumieniu w kolekcji danych
https://www.baeldung.com/java-groupingby-collector -> groupingiem zalatwisz to szybciej  

albo z metody operatora strumienia 

static <T> Collector<T,?,Map<Boolean,List<T>>> partitioningBy(Predicate<? super T> predicate)


ze strumienia podzielic mape na odpowiednie wartosci i dwie listy filtrujac po predykatach zlozonych ;]

komentarz 30 stycznia 2022 przez Bakkit Dyskutant (7,600 p.)
Ok, dzięki

Podobne pytania

+1 głos
1 odpowiedź 318 wizyt
pytanie zadane 23 kwietnia 2022 w Java przez Czang Kai Shrek Obywatel (1,990 p.)
0 głosów
2 odpowiedzi 600 wizyt
pytanie zadane 17 maja 2022 w Java przez Arek Kowalski Początkujący (450 p.)
0 głosów
1 odpowiedź 449 wizyt
pytanie zadane 27 kwietnia 2020 w Java przez danielo665 Obywatel (1,040 p.)

93,329 zapytań

142,323 odpowiedzi

322,400 komentarzy

62,662 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...