Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Java]ArrayList
gregi
post 14.04.2015, 22:22:44
Post #1





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

Ostrzeżenie: (0%)
-----


Szukam zgrabnej konstrukcji arraylist dwu wymiarowej
Czy mogę prosić aby ktoś pokazał implementację wraz z przykładowym mechanizmem zasilania w dane ?
Go to the top of the page
+Quote Post
Kshyhoo
post 14.04.2015, 22:30:17
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




  1. int tablica[][] = new int[y][x];


--------------------
Go to the top of the page
+Quote Post
gregi
post 14.04.2015, 22:54:25
Post #3





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

Ostrzeżenie: (0%)
-----


na tą chwilę mam takiego dziwoląga i się zastanawiam czy da się bardziej uprościć

  1. ArrayList<ArrayList<Integer>> arrayList = new ArrayList<ArrayList<Integer>>();
  2.  
  3. ArrayList<Integer> lista1 = new ArrayList<Integer>();
  4. ArrayList<Integer> lista2 = new ArrayList<Integer>();
  5. ArrayList<Integer> lista3 = new ArrayList<Integer>();
  6.  
  7. lista1.add(1);
  8. lista1.add(2);
  9. lista1.add(3);
  10. lista1.add(4);
  11. lista2.add(5);
  12. lista2.add(6);
  13. lista2.add(7);
  14. lista2.add(8);
  15. lista3.add(9);
  16. lista3.add(10);
  17. lista3.add(11);
  18. lista3.add(12);
  19.  
  20. arrayList.add(lista1);
  21. arrayList.add(lista2);
  22. arrayList.add(lista3);
Go to the top of the page
+Quote Post
Turson
post 15.04.2015, 06:36:16
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


http://stackoverflow.com/questions/4401850...raylist-in-java
Go to the top of the page
+Quote Post
gregi
post 15.04.2015, 10:44:26
Post #5





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

Ostrzeżenie: (0%)
-----


Dzięki dobry przykład.
Jednocześnie proszę o wytłumaczenia wskazania "This". W tym przypadku nie rozumiem na jaki obiekt czy pole wskazuje smile.gif
  1. class TwoDimentionalArrayList<T> extends ArrayList<ArrayList<T>> {
  2. public void addToInnerArray(int index, T element) {
  3. while (index >= this.size()) {
  4. this.add(new ArrayList<T>());
  5. }
  6. this.get(index).add(element);
Powód edycji: [Kshyhoo]: bb-code
Go to the top of the page
+Quote Post
Turson
post 15.04.2015, 10:46:06
Post #6





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


this bo dziedziczysz ArrayList a on ma taką metodę
Go to the top of the page
+Quote Post
gregi
post 15.04.2015, 11:53:10
Post #7





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

Ostrzeżenie: (0%)
-----


ok
A czy teoretycznie w tym wypadku ten this można pominąć bezpiecznie ponieważ nie przesłaniamy metody?
Dzięki
Go to the top of the page
+Quote Post
Turson
post 15.04.2015, 15:54:36
Post #8





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Możesz
Go to the top of the page
+Quote Post
gregi
post 15.04.2015, 17:21:53
Post #9





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

Ostrzeżenie: (0%)
-----


  1. ArrayList<Integer> lista = new ArrayList<Integer>();
  2. lista.add(0, ++i);
  3. lista.add(0, ++i);
  4. lista.add(0,++i )
  5. lista.add(0, ++i);


powyższy zapis dodaje na daną pozycję element i przesuwają elementy na nowe pozycje. czyli mamy wynik 4,3,2,1
jak w ArraList zastąpić element w indexie 0 tak żeby nie wstawiało w pole nowego elementu lecz je zastępowało? tak aby po wykonaniu kodu lista zawierała tylko 1 element o indexie 0 o wartości 4?

Ten post edytował Kshyhoo 15.04.2015, 17:44:49
Powód edycji: [Kshyhoo]: bb-code
Go to the top of the page
+Quote Post
Kshyhoo
post 15.04.2015, 17:38:00
Post #10





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Kontynuuj poprzedni wątek. Łączę.

Używaj bb-code.


--------------------
Go to the top of the page
+Quote Post
Crozin
post 15.04.2015, 17:50:48
Post #11





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Zamiast metody add() użyj set() z tymi samymi parametrami.
Go to the top of the page
+Quote Post
gregi
post 15.04.2015, 18:52:28
Post #12





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

Ostrzeżenie: (0%)
-----


ok, dzięki,
jednak jeżeli index wcześniej nie istniał to rzuca mi wyjątek.


  1. Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
  2. at java.util.ArrayList.rangeCheck(Unknown Source)
  3. at java.util.ArrayList.set(Unknown Source)
  4. at SQL.SqlConnector.getFromTable(SqlConnector.java:220


Czyli muszę w pierwszej kolejności dodać obiekt poprzez add (aby stworzyć dany index) a jak chce wymienić to set.
Jeżeli jest jakaś zgrabniejsza konstrukcja to proszę dajcie znać

Go to the top of the page
+Quote Post
Crozin
post 15.04.2015, 19:38:18
Post #13





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Możesz opisać co właściwie robisz, że potrzebujesz takiego dziwnego rozwiązania?
Go to the top of the page
+Quote Post
gregi
post 16.04.2015, 14:51:18
Post #14





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 11.09.2003

Ostrzeżenie: (0%)
-----


Masz racje jest dziwne ale nie dlatego że to potrzebuję, ale dlatego że chce zamienić zwykłe tablice na arraylist. Ale najwidoczniej nie zawsze się opłaca

Jednak mam pytanie smile.gif
jak wyświetlić wewnętrzną tablicę ?
System.out.println( outerArray.get(1).innerArray[1]? ? ?) poniżej w kodzie kontekst


  1. public ArrayList<String[]> getFromTable(String table, String column1, String column2, String column3, String column4) {
  2.  
  3. ArrayList<String[]> outerArray= new ArrayList<String[]>(4);
  4.  
  5. String innerArray[] = new String [4];
  6.  
  7. String query = "SELECT * FROM " + table;
  8. int i = 0;
  9. try {
  10.  
  11. preparedStatement = connection.prepareStatement(query);
  12. resultset = preparedStatement.executeQuery();
  13.  
  14. while (resultset.next()) {
  15.  
  16. innerArray[0]= resultset.getString(column1);
  17. innerArray[1]= resultset.getString(column2);
  18. innerArray[2]= resultset.getString(column3);
  19. innerArray[3]= resultset.getString(column4);
  20.  
  21.  
  22. outerArray.add(innerArray);
  23.  
  24. System.out.println( outerArray.get(1).innerArray?questionmark.gif); // !! jak wyśiwietlić wewnętrzną array
  25. }
  26.  
  27. resultset.close();
  28. preparedStatement.close();
  29.  
  30. } catch (SQLException e) {
  31. System.out.println("Coś poszło nie tak w getFromTable()");
  32. e.printStackTrace();
  33. }
  34. return outerArray;
  35. }


Ten post edytował gregi 16.04.2015, 14:51:46
Go to the top of the page
+Quote Post
Crozin
post 16.04.2015, 15:07:17
Post #15





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Wydaje mi się, że mylisz tutaj kilka rzeczy.
  1. ArrayList<String[]> outerArray= new ArrayList<String[]>(4);
Zmienna outerArray jest Listą, nie tablicą. Może ona przechowywać dowolną ilość obiektów typu String[] w sobie. Wartość 4 jaką podałeś w konstruktorze ArrayList to jedynie początkowa "pojemność" listy - szczegół implementacji ArrayList. Nie ma on nic wspólnego z ilością elementów jakie może przechowywać lista, ani z pojemnością poszczególnych jej elementów.

Cytat
Masz racje jest dziwne ale nie dlatego że to potrzebuję, ale dlatego że chce zamienić zwykłe tablice na arraylist.
Zapewne chcesz zamienić tablice na listę (obojętnie jaką, nie koniecznie ArrayList). W takim przypadku po prostu skorzystaj z:
  1. Arrays.asList(mojaTablica)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 6.07.2025 - 16:54