Java i problem z tablicami

0

Cześć,
jestem absolutnie początkujący w javie. Do rzeczy:
funkcja na wstepie pobiera dwie tablice jednowymiarowe, ich wspolne elementy zapisuje do trzeciej tablicy i ją sortuje... Z pobraniem dwóch tablic i znalezieniem ich wspolnych elementow nie mam problemu:

for (int i = 0; i <= A.length - 1; i++) {
            for (int j = 0; j <= B.length - 1; j++) {
                if (A[i] == B[j]) {
                    System.out.println("element wspolny: " + A[i]);
                        }
            }
        }

i to mi na ekran wypisuje elementy wspolne tablic A i B. Ale teraz pytanie: jak to zapisac do tablicy C? rozumiem, że w tym warunku IF( ... ) zrobic przypisanie, ale... jak zadeklarowac wczesniej tą tablicę? :( bo jak zadeklaruję normalnie: int[] C = new int[10]; to mi dopełni tablicę zerami, a tego nie chcę... Pomóżcie, dzięki :)

0

Widać, że początkujący...

nie A[i] == B[j], tylko A[i].equals(B[j]), to jak mniemam chcesz porównać zawartość a nie równość referencji ? Aha... no chyba, że te tablice są wypełnione intami, doublami, etc a nie klasami - jeśli tak, to zwracam honor ;)

może użyj klasy Vector zamiast tablic ? I jak spotkasz jakiś nowy element wspólny, to dodawaj do wektora po prostu ?

0
[losowa nazwa] napisał(a)

Widać, że początkujący...

nie A[i] == B[j], tylko A[i].equals(B[j]), to jak mniemam chcesz porównać zawartość a nie równość referencji ? Aha... no chyba, że te tablice są wypełnione intami, doublami, etc a nie klasami - jeśli tak, to zwracam honor ;)

może użyj klasy Vector zamiast tablic ? I jak spotkasz jakiś nowy element wspólny, to dodawaj do wektora po prostu ?

hej,
tablice są wypełnione intami, więc "==" sobie z tym idealnie radzi... Twoje rozwiązanie jest kuszące, ale w założeniu zadania mam, by efekt końcowy byl w tablicy jednowymiarowej... :( Dzięki za pomoc :)

0

Na szybko widzę dwa rozwiązania:

  1. swoją pętle wykonujesz dwa razy, za pierwszym razem liczysz ile jest równych elementów, tworzysz odpowiednio dużą tablicę, za drugim przebiegiem przepisujesz
  2. tworzysz kolekcję (ArrayList,Vector), a na końcu wywołujesz metodę toArray().
0
bogdans napisał(a)

Na szybko widzę dwa rozwiązania:

  1. swoją pętle wykonujesz dwa razy, za pierwszym razem liczysz ile jest równych elementów, tworzysz odpowiednio dużą tablicę, za drugim przebiegiem przepisujesz
  2. tworzysz kolekcję (ArrayList,Vector), a na końcu wywołujesz metodę toArray().

Dziękuję,
pierwsza opcja załatwia sprawę...
Problem jednak nadal aktualny - czy w javie mozna zadeklarowac tablicę z niewiadomą liczbą elementow, a dopiero pozniej ją uzupelniac o dane elementy?

0

Tak jak Ci poprzednicy napisali: ArrayList, Vector do tego służą. Tworzysz obiekt typu ArrayList, dodajesz do niego elementy metodą add i jak już masz w tej kolekcji wszystko co chcesz możesz wywołać metodę toArray() która zwróci tablicę z zawartością którą dodałeś do ArrayList.

0

Możesz też zrobić dwie funkcje, jesli nie chcesz używać kolekcji:
Pierwsza zlicza ilosc identycznych elementów i zwraca licznik,
Druga zapełnia ją powtarzającymi się elementami.

0

Nie, do takich operacji służą kolekcje

ArrayList<integer> liczby=new ArrayList<Integer>();
//dla liczb k spełniających pewien warunek
liczby.add(k);
0

Dziękuję za pomoc, ArrayList faktycznie czyni cuda :) temat do zamknięcia, pozdrawiam.

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