[Java]Łączenie jednowymiarowych tablic

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
bulva
Sędziwy Jeż
Sędziwy Jeż
Posty: 60
Rejestracja: 28 wrz 2009, 12:40
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

[Java]Łączenie jednowymiarowych tablic

Post autor: bulva »

Jak w efektywny sposob polaczyc w Javie dwie tablice jednowymiarowe w jedną dwuwymiarową, wedlug kolum?

Czyli np biorac jako argumenty:

Kod: Zaznacz cały

double[] a = {0,0,0,0}
double[] b = {1,1,1,1}
Otrzymać:

Kod: Zaznacz cały

double[][] c = {{0,1},
                {0,1},
                {0,1},
                {0,1}};
mikolajs
Wytworny Kaczor
Wytworny Kaczor
Posty: 352
Rejestracja: 15 paź 2008, 18:30
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma

Odp: [Java]Łączenie jednowymiarowych tablic

Post autor: mikolajs »

A dlaczego nie stworzysz tablicy dwuwymiarowej i nie przekopujesz?
Awatar użytkownika
DDAroo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 107
Rejestracja: 27 cze 2009, 10:47
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: KDE Plasma
Architektura: x86
Lokalizacja: Kraków
Kontakt:

Odp: [Java]Łączenie jednowymiarowych tablic

Post autor: DDAroo »

Chyba nie ma innej metody niż kopiowanie element po elemencie.
Awatar użytkownika
ilu2112
Sędziwy Jeż
Sędziwy Jeż
Posty: 35
Rejestracja: 28 lut 2009, 20:31
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Łódź
Kontakt:

Odp: [Java]Łączenie jednowymiarowych tablic

Post autor: ilu2112 »

DDAroo pisze:Chyba nie ma innej metody niż kopiowanie element po elemencie.
A jeżeli nawet istnieją to pewnie sprowadzają się właśnie do kopiowania ;)
adeptofvoltron
Sędziwy Jeż
Sędziwy Jeż
Posty: 31
Rejestracja: 04 lis 2010, 18:04
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86

Odp: [Java]Łączenie jednowymiarowych tablic

Post autor: adeptofvoltron »

przejrzyj sobie dokumentacje na stronie Oracle.

ale w javie używanie tablic to grzech...podczas gdy ma się wmontowanym wiele innych rozwiązań typu listy i vectory:
http://download.oracle.com/javase/1.4.2 ... ector.html
Awatar użytkownika
DDAroo
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 107
Rejestracja: 27 cze 2009, 10:47
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: KDE Plasma
Architektura: x86
Lokalizacja: Kraków
Kontakt:

Odp: [Java]Łączenie jednowymiarowych tablic

Post autor: DDAroo »

Ja tam nie widzę niczego grzesznego w tablicach :p
Awatar użytkownika
ilu2112
Sędziwy Jeż
Sędziwy Jeż
Posty: 35
Rejestracja: 28 lut 2009, 20:31
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Łódź
Kontakt:

Odp: [Java]Łączenie jednowymiarowych tablic

Post autor: ilu2112 »

adeptofvoltron pisze:przejrzyj sobie dokumentacje na stronie Oracle.

ale w javie używanie tablic to grzech...podczas gdy ma się wmontowanym wiele innych rozwiązań typu listy i vectory:
http://download.oracle.com/javase/1.4.2 ... ector.html
Jasne jest to, że różne implementacje interfejsu List załatwiają praktycznie wszystkie problemy, które można rozwiązać za pomocą tablic, jednak czasem szkoda czasu na konstruowanie nowego obiektu jeżeli potrzebujemy tylko tablicy 4x4. Poza tym tablice cechują się bezpośrednim dostępem do elementów, czyli są szybsze w użyciu. Stąd wnioskuję, że używanie tablic w Javie nie jest specjalnie obrzydliwe ;)
bulva
Sędziwy Jeż
Sędziwy Jeż
Posty: 60
Rejestracja: 28 wrz 2009, 12:40
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [Java]Łączenie jednowymiarowych tablic

Post autor: bulva »

Są metody Array.fill i podobne, powinny być szybsze od kopiowanie...
mikolajs
Wytworny Kaczor
Wytworny Kaczor
Posty: 352
Rejestracja: 15 paź 2008, 18:30
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma

Odp: [Java]Łączenie jednowymiarowych tablic

Post autor: mikolajs »

Gdybyś chciał mieć ze swoich tablic jedną tablicę [2][4] to można by pewnie bez kopiowania. A tak trzeba przeorganizować tablicę, nawet kopiowanie adresów w C zajęłoby tyle samo co kopiowanie danych.
norvoles
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1113
Rejestracja: 04 sty 2008, 20:58
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64

Odp: [Java]Łączenie jednowymiarowych tablic

Post autor: norvoles »

Jak w efektywny sposob polaczyc w Javie dwie tablice jednowymiarowe w jedną dwuwymiarową
Nie wiem, co masz zamiar zrobić, ale nie jestem pewien czy łączenie jest w ogóle konieczne. Chyba, że nie da się operować na dwóch tablicach z jakiegoś powodu albo za wczasu zrobić dwuwymiarowej.
Awatar użytkownika
mate_haru
Sędziwy Jeż
Sędziwy Jeż
Posty: 47
Rejestracja: 05 paź 2006, 12:42
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: Fluxbox
Architektura: x86_64
Kontakt:

Odp: [Java]Łączenie jednowymiarowych tablic

Post autor: mate_haru »

adeptofvoltron pisze:przejrzyj sobie dokumentacje na stronie Oracle.

ale w javie używanie tablic to grzech...podczas gdy ma się wmontowanym wiele innych rozwiązań typu listy i vectory:
http://download.oracle.com/javase/1.4.2 ... ector.html
Tablice to grzech? Bzdura! Wraz z kolega wlasnie ukonczylismy program do rozpoznawania odrecznie pisanych liczb, gdzie liczby byly podawane do programu jako macierze bajtow (juz nie bede wchodzil w szczegoly). Program "uczy" sie rozpoznawania na zbiorze 60.000 obrazkow, a do testowania sluzy 10.000 obrazow testowych. Nalezy osiagnac jak najwieksza skutecznosc rozpoznawania przy jak najwiekszej wydajnosc dzialania programu. W momencie, gdy uzywane byly kolekcje - program wykonywal sie od 6 do 10 minut. Stopniowa optymalizacja kodu poprzez zastepowania kolekcji tablicami i dolozenie drugiego watku spowodowaly przyspieszenie dzialania do niecalych 2 minut! Tablice sa o wiele bardziej wydajne - czas dostepu do poszczegolnych jej elementow jest o wiele krotszy niz jest to w przypadku kolekcji, o czym przekonalismy sie w trakcie realizacji projektu. Nie przecze, ze kolekcje sa wspanialym rozwiazaniem w wielu przypadkach i ich elastycznosc sprawia, ze pisanie w Javie jest naprawde fajne ^^ Niemniej - tam, gdzie zalezy nam na wydajnosci, nalezy przemyslec uzycie tablic.

Zas w kwestii tematu: najprosciej utworzyc macierz o odpowiednim rozmiarze i przekopiowac "recznie". Uzycie kolekcji w tym przypadku byloby jak jechanie z Lodzi do Zakopanego przez Szczecin :P

Pozdrawiam!
norvoles
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1113
Rejestracja: 04 sty 2008, 20:58
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64

Odp: [Java]Łączenie jednowymiarowych tablic

Post autor: norvoles »

Tablice sa o wiele bardziej wydajne - czas dostepu do poszczegolnych jej elementow jest o wiele krotszy niz jest to w przypadku kolekcji, o czym przekonalismy sie w trakcie realizacji projektu.
Pisaliście w Javie? W przypadku c++ wystarczy kompilować z optymalizacją i takie vectory na przykład stają się równie szybkie jak zwykłe tablice.
W Javie coś kiedyś pisałem, ale odrzucił mnie brak wskaźników.
mikolajs
Wytworny Kaczor
Wytworny Kaczor
Posty: 352
Rejestracja: 15 paź 2008, 18:30
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: KDE Plasma

Odp: [Java]Łączenie jednowymiarowych tablic

Post autor: mikolajs »

W przypadku c++ wystarczy kompilować z optymalizacją i takie vectory na przykład stają się równie szybkie jak zwykłe tablice.
Miałeś na myśli PRAWIE tak samo szybkie jak zwykłe tablice? W sumie w vectory muszą odczytać parę adresów więcej. Fakt, że różnica jest tak niewielka, że szkoda fatygi, aby używać zwykłych tabel, a dodatkowo w sytuacji gdy w programie trzeba powiększyć tablicę sens jej użycia zupełnie znika :) Ale nie ma sensu tego wniosku przenosić na inny język programowania, wszystko zależy od implementacji. Najlepiej sprawdzić doświadczalnie :)
W Javie coś kiedyś pisałem, ale odrzucił mnie brak wskaźników.
Java operuje na referencjach, przynajmniej z nazwy, ale bliżej im do wskaźników niż referencji znanych z C++ tyle, że nie ma możliwości arytmetyki na tych wskaźnikach
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 11 gości