Lepiej stworzyć obiekt czy 2 mapy?

0

Potrzebuje wyfiltrować pewne wartości, które przychodzą z dwóch źródeł.

Np. dostaje z jednego zródła: <"marka samochodu", ilość>; a z drugiego źródła: <kolor, marka samochodu, pojemosc>.

Teraz musze wybrać wszytkie marki samochodu i w zależności która marka miała najwięcej samochodów będę wykonywał na samym konću metody juz wybrane dla nich działanie. Dodatkowo jeżeli mam dwie takie same marki samochodów, ale różnią sie początkiem nr seryjengo to musze wybrać tą markę która ma wiekszą liczbę samochodów.

I teraz mam pytanie: czy tworzyć do tego obiekt pomocniczy czy załatwić to kolkecjami chyba że inny sposób widzicie? Nie wiem czy jest sens tworzenie obiektu tylko aby uzyć go w tym jednym miejscu.

1

Używałbym Listy i streamów. Mapy o ile bym używał to tylko tej wynikowej z stream groupBy.

0

Nie do konca rozumiem o co Ci chodzi ale moze po prostu jakas sortowana kolekcja? i od razu mialbys to ustawione w kolejnosci jaka chcesz zaleznie od implementacji komparatora?

3
TakMaszRacje napisał(a):

Dodatkowo jeżeli mam dwie takie same marki samochód ale różnią sie początkiem nr seryjengo

Uspokój, pooddychaj głęboko.

Jak zaczniesz samemu sobie jaśniej mówić o problemie, kod sie sam napisze
Nie da sie do chaotycznych tzw "założeń" napisać dobrego kodu, a póki co opowieść ma jakość bełkotu.

0
TakMaszRacje napisał(a):

. Dodatkowo jeżeli mam dwie takie same marki samochód ale różnią sie początkiem nr seryjengo to musze wybrać tą markę która ma wiekszą liczbę samochodów. .

Jeśli masz dwie takie same marki (np. kia nr seryjny 123 ilość 100 i kia nr seryjny 456 ilość 200) to bez znaczenia którą wybierzesz zawsze to będzie kia.

1
TakMaszRacje napisał(a):

Nie wiem czy jest sens tworzenie obiektu tylko aby uzyć go w tym jednym miejscu.

Nie ma nic złego w tworzeniu obiektu żeby go użyć raz.

1

Jeden pies

0

Można obiek i możesz rozwiązać to koleją, Można użyć jeszcze takiej formy np. Map<String, Map<String, String > outMap = new .. Może to pomoże rozwiazać problem

1

Jeśli miałby ocenić poziom trudności zadania od zera do 10. to bym dał. 1e-10000.

w pythonie możesz zrobić coś w stylu sorted(lambda x: x[1])
chyba, że na słownikach pracujesz to wtedy klucze sortujesz.

Ten problem jest mega podstawowy, aż głupio się pomaga albo próbuje pomóc to takie easy easy easy poziom, tyle że bardzo niezrozumiale to zapisałeś i nie da się tak łatwo wywnioskować o co ci chodziło.

0

czy cos takiego będzie dobrze ( nie patrzcie na nazwy bardziej sama skłądania)? Java 1.6 własnie w tym problem bo tak uużyułbym streamów a nie mogę.

		for (carData car : carDataList) {

				int calculatedVolume = calcualte( car.getVolume())

				if (!checkDuplicateList.containsKey(car.getType()) && car.getVolume() != null) {
					Map<Integer, Integer> innerMap = new HashMap<Integer, Integer>();
					innerMap.put(Integer.parseInt(car.getShpId().toString()), calculatedVolume);
					checkDuplicateList.put(car.getScantype(), innerMap);

				}else if (checkDuplicateList.containsKey(car.getScantype())) {
						for (Map.Entry<String, Map<Integer, Integer>> entry : checkDuplicateList.entrySet()) {
							for (Map.Entry<Integer, Integer> inermap : entry.getValue().entrySet()) {
								int inMapVolume = inermap.getValue();
								if(calculatedVolume < inMapVolume){
	                                 .....
								}
							}
						}
					}

				}
			
		}
1

Jeśli obiektów w tej kolekcji bedziesz miał dużo to mapa lepsza. Bedzię wydajniejsza podczas wyszukiwania.

0

Masz dwa źródła danych.

Pytania

Jak łączysz rekordy z tych źródeł?
Czym jest numer seryjny, bo nie ma go w opisanych strukturach?

Założenie

Marka samochodu jest identyfikatorem rekordów pozwalających na łączenie rekordów z różnych źródeł

Propozycja

Utwórz rekord:

record CarSearchPojection(String brand, String color, int quantity, int capacity);

Następnie połącz źródła z wykorzystaniem biblioteki assembler/cohereflux w wersji 0.6.6, która jeszcze obsługuje klasyczne kolekcje. Następnie dostaniesz strumień CarSearchPojection na którym możesz wykonywać operacje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1