Inna kolejnosc HashMapy na wyjsciu niz kolejnosc wprowadzania danych

0

napisalem funkcje ktora ma mi tworzyc mape z danych. Wszystko dziala tylko dane na wyjsciu sa inaczej posortowane niz w kolejnosci wprowadzania jak to zmienic?

	public HashMap<String,ArrayList<String>> getLangsMap(){
		HashMap<String,ArrayList<String>> result = new HashMap<>();
		String rows[] = data.split("\n");
		for(int i=0; i<rows.length; i++){
			ArrayList<String> prog = new ArrayList<>();
			String row[] = rows[i].split("\t");
			for(int j=1; j<row.length; j++){
				prog.add(row[j]);
			}
			prog = (ArrayList<String>) prog.stream().distinct().collect(Collectors.toList());
			System.out.println(row[0]+prog);
			result.put(row[0], prog);
		}
		System.out.println();
		return result;
	}

Data to taki o to String pobrany z pliku:
Aps Z Y X D
Dossd V S C D A Z
Kas G J T
COAL P S Q V D
Scad A D

A po wyswietleniu tej mapy mamy:
getLangsMap().forEach((k,v)->System.out.println(k+ " = " + v)); //Sposob wyswietlenia ma byc nie zmieniony
Scad = [A, D]
Aps = [Z, Y, X, D]
COAL = [P, S, Q, V, D]
Dossd = [V, S, C, D, A, Z]
Kas = [G, J, T]

Jak nie zmieniac kolejnosci

0

Wypadałoby poczytać o tym czego się używa. HashMapa nie ma żadnego sortowania, a TreeMap możesz sortować.

0

W dokumentację zajrzeć się nie chce, co? : )

https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html

W trzecim zdaniu:

This class makes no guarantees as to the order of the map; in particular, it does not guarantee that the order will remain constant over time.

Użyj innej kolekcji. Jest taka mapa, która gwarantuje utrzymanie kolejności elementów.

0

Racja przepraszam wszystkich.
Poczytałem i dowiedzialem się ze moge dac argument konstruktora jako Comparator i zaimplementowac funkcje compare. I to prawda moge je posortowac np leksykograficznie ale nadal nie rozwiazuje mi to jak zrobic aby byly posortowane wedlug kolejnosci dodawania do mapy...

1

Jest taka mapa, która zachowuje kolejność wstawiania. Czy ty naprawdę nie potrafisz nawet gugla użyć?

http://bfy.tw/BEH9 - każdy z pierwszych trzech linków zawiera odpowiedź na twoje pytanie

0

LinkedHashMap
Ale tak generalnie to zalecam przeczytać jak te struktury danych działają a nie wybierać sobie jakąś "losowo" a potem narzekać że nie działa tak jak byś chciał.

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