• 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

Object Storage Arubacloud
+1 głos
159 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 (270,150 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 (270,150 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ź 245 wizyt
pytanie zadane 23 kwietnia 2022 w Java przez Czang Kai Shrek Obywatel (1,990 p.)
0 głosów
2 odpowiedzi 251 wizyt
pytanie zadane 17 maja 2022 w Java przez Arek Kowalski Początkujący (450 p.)
0 głosów
1 odpowiedź 309 wizyt
pytanie zadane 27 kwietnia 2020 w Java przez danielo665 Obywatel (1,040 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...