wyświetlanie tablicy stringów od najdłuższych do najktótszych

0

Witam,
Chce stworzyć tablice stringów, użyc na każdym metody trim(), i wyświetlić je od najdłuższego do najkrótszego.W miare mozliwości bez Array

public class XXX {
    public static void main(String[] args) {
        String[] tablica = {" Ala ma kota ", "Karol nie ma psa ", "Jan nie ma psa, ani kota, za to ma HIVa"};
        for (String i : tablica) {
            i.trim();
        }
    }
}
2
Arrays.stream(tablica)
            .map(String::trim)
            .sorted(Comparator.comparingInt(String::length).reversed())
            .forEach(System.out::println);
0
damianem napisał(a):
Arrays.stream(tablica)
            .map(String::trim)
            .sorted(Comparator.comparingInt(String::length).reversed())
            .forEach(System.out::println);

Nie da się tego zrobić bez urzywania Comparatorów ?
w sposób dla poczatkujacego

2

Wszystko się da, po prostu streamami jest najszybciej i ten kod jest dobrze czytelny.

Jak chcesz zrobić to po studencku to rozpisz sobie krok po kroku co musiałbyś zrobić aby uzyskać oczekiwany efekt, np:

  1. Przechodzisz po pierwotnej tablicy
  2. Dla każdego rozważanego stringa, po trimie pobierasz jego długość.
  3. Możesz te uzyskane liczby wrzucać po kolei do listy intigerów. (zamiast listy, może być też np mapa, dzięki czemu od razu po uzyskaniu największej wartości masz przypisany do niej string. Ale zakładam, że kolekcji innych niż listy też jeszcze pewnie nie ogarniasz.)
  4. Mając listę, szukasz największej wartości, indeks pod którym będzie, będzie równy indeksowi w pierwotnej tabeli, dzięki czemu możesz pobrać odpowiedniego stringa.
  5. Ponownie szukasz największej wartości ale już bez tej wyliczonej w poprzednim kroku - tutaj pokombinuj jak to zrobić "w miarę ok".
  6. Robisz tak aż do uzyskania ostatniej wartośći.

Pytanie co będzie szybsze:

  1. Poczytanie o streamach, comparatorach itp
  2. Napisanie kodu do przykładowego pseudo algorytmu, który napisałem CI wyżej.

Jeśli chcesz iść w javę, ani streamy ani comparatory Cie nie ominą.

edit: rozumiem, że możesz się "bać" streamów bo to dla CIebie nowość. Ale rezygnacja z comparatorów łączy się z tym, że będziesz musiał napisać samemu sortowanie.

tutaj przykładowy kod studencki, bez streamów, ale z użyciem Comparatora.

String[] tablica = { " Ala ma kota ", "Karol nie ma psa ", "Jan nie ma psa, ani kota, za to ma HIVa" };
		List<String> trimmedString = new ArrayList<>();
		for (String str : tablica) {
			trimmedString.add(str.trim());
		}

		Collections.sort(trimmedString, Comparator.comparingInt(String::length).reversed());
		for (String sorted : trimmedString) {
			System.out.println(sorted);
		}

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