2013-06-06 11 views
12

Tôi muốn tạo một mảng 2D mà mỗi ô là ArrayList!Làm thế nào để tạo một ArrayList 2D trong java?

Tôi xem xét các defintion này, nhưng tôi không thể thêm bất cứ điều gì cho họ là những defintions đúng ?!

ArrayList<ArrayList<String>> table = new ArrayList<ArrayList<String>>(); 

hoặc

ArrayList[][] table = new ArrayList[10][10]; 

//table.add?????? 

Xin hãy giúp tôi

+0

này sẽ giúp bạn http://stackoverflow.com/questions/10768170/how-do-i-declare-a-2d-string-arraylist – newuser

+0

Chào. Tiêu đề của câu hỏi không nhất quán với nội dung của câu hỏi. Bạn có muốn một mảng 2D của ArrayList (một cái gì đó như 3D, cuối cùng) hoặc một ArrayList 2D (một ArrayList của ArrayList)? Nếu bạn yêu cầu điều này cho bài tập về nhà của bạn, bạn có thể viết câu hỏi ban đầu. Cuối cùng, bạn có hoàn toàn cần khai báo ArrayList không. Bạn có thể sử dụng danh sách intead? –

+0

Oh và bạn khai báo 2D ArrayList of String trong phần đầu tiên của câu hỏi của bạn. Đó có phải là chính xác mà bạn cần phải đặt String trong ArrayList bên trong của bạn? –

Trả lời

27

Tôi muốn tạo ra một mảng 2D rằng mỗi tế bào là một ArrayList!

Nếu bạn muốn tạo một mảng 2D của ArrayList Sau đó, bạn có thể làm điều này:

ArrayList[][] table = new ArrayList[10][10]; 
table[0][0] = new ArrayList(); // add another ArrayList object to [0,0] 
table[0][0].add(); // add object to that ArrayList 
+1

Tại sao downvote lại là? – NINCOMPOOP

+1

Tôi phát hiện lỗi trình biên dịch ở đây .... Btw, tôi không downvote bạn. –

+0

Lỗi trình biên dịch chỉ khi 'arrayListObject' không phải là đối tượng' ArrayList'. – NINCOMPOOP

28

Cách tốt nhất là sử dụng List với trong List

List<List<String>> listOfLists = new ArrayList<List<String>>(); 
2
ArrayList<String>[][] list = new ArrayList[10][10]; 
list[0][0] = new ArrayList<>(); 
list[0][0].add("test"); 
20

1st hết, khi bạn khai báo một biến trong java, bạn nên khai báo nó sử dụng Giao diện ngay cả khi bạn chỉ định việc triển khai khi instantiating nó

ArrayList<ArrayList<String>> listOfLists = new ArrayList<ArrayList<String>>(); 

nên được viết

List<List<String>> listOfLists = new ArrayList<List<String>>(size); 

Sau đó, bạn sẽ phải nhanh chóng tất cả các cột của mảng 2ngày của bạn

for(int i = 0; i < size; i++) { 
     listOfLists.add(new ArrayList<String>()); 
    } 

Và bạn sẽ sử dụng nó như thế này:

listOfLists.get(0).add("foobar"); 

Nhưng nếu bạn thực sự muốn "tạo một mảng 2D mà mỗi ô là một ArrayList! "

Sau đó, bạn phải đi theo cách ijkstra.

+0

không nên là (Danh sách col: listOfLists)? –

+0

thực sự :) cảm thấy tự do để chỉnh sửa – Gab

+1

Đây chỉ là sai, bạn không thể sửa đổi cấu trúc 'listOfLists' theo cách này! Bạn đang lặp qua một cấu trúc rỗng để 'for' sẽ không làm gì cả và' get' sau đây sẽ ném một ngoại lệ. –

1

Điều này có thể đạt được bằng cách tạo ra đối tượng của cấu trúc Danh sách dữ liệu, như sau

Danh sách list = new ArrayList();

Để biết thêm thông tin tham khảo liên kết này

How to create a Multidimensional ArrayList in Java?