2012-04-08 47 views
12

Tôi muốn tạo mảng hai chiều mà tôi muốn lưu trữ bản ghi từ cơ sở dữ liệu. Vì vậy, hãy nói rằng đầu tiên là loại int và loại thứ hai là String (ở đây tôi chỉ mô tả một bản ghi về cơ bản là các loại cột db). Tôi làm nó như thế nào? Là một mảng cấu trúc dữ liệu đúng cho điều đó?Mảng hai chiều các loại khác nhau

Trả lời

5

Mảng chỉ có thể chứa một loại. Nếu kiểu đó xảy ra là Object thì nó có thể lưu trữ Object và bất kỳ loại phụ nào của nó, nhưng điều đó không thực sự giống như những gì bạn đang cố gắng thực hiện ở đây.

Có vẻ như những gì bạn mô tả là một mảng 2D để lưu trữ thông tin cơ sở dữ liệu, với mỗi phần tử trong mảng là một cột trong một trong các hàng. không phải là một mảng bản ghi, đó là một mảng dữ liệu cột.

Thay vào đó, chỉ lưu một mảng bản ghi một chiều, trong đó mỗi phần tử của mảng là tham chiếu đến toàn bộ hàng DB.

+0

Tôi xin lỗi nhưng tôi không chắc chắn ý của bạn là gì: "mỗi phần tử của mảng là tham chiếu đến toàn bộ hàng DB". Toàn bộ hàng DB được tạo thành từ hai cột gồm các loại, chuỗi và int khác nhau. Làm thế nào tôi có thể lưu trữ nó trong một mảng? – lunar

+1

Bạn đang sử dụng gì để truy cập cơ sở dữ liệu? Phải có một đối tượng đại diện cho một hàng trong một bảng. Sau đó, hàng đó phải có các phương thức mà bạn có thể gọi để truy cập dữ liệu cột trong hàng đó. Bất cứ đối tượng nào kết thúc tốt đẹp hàng cơ sở dữ liệu là những gì bạn cần lưu trữ trong mảng của bạn. Ý tôi là, đó là cơ bản những gì một bảng cơ sở dữ liệu là một mảng các hàng. – jefflunt

11

Tôi không chắc chắn tôi đang theo dõi, nhưng bạn có thể đang tìm kiếm Map<Integer,String>. hoặc Map<Integer,List<String>>. [Có một cái nhìn vào List, và HashMap]

Map cho phép Hiệp hội các phím [Integer] với giá trị [String hoặc List].

Map cũng cho phép tra cứu nhanh khóa và giá trị được đính kèm của khóa.

(*) Bạn nên sử dụng Map<Integer,List<String>> nếu bạn muốn đính kèm nhiều hơn thì một String mỗi Integer, hoặc cách khác bạn có thể sử dụng commons apache MultiMap

+1

Bản đồ nếu bạn này không phải java không cho phép bản ghi cho Số nguyên trùng lặp. –

+0

@yogeshprajapata Bạn có thể sử dụng một trong 'MultiMap' của Guava hoặc Apache để cho phép điều này. – Jeffrey

+0

@ Jeffrey nhưng bạn chưa nhắc đến ở đây là bạn đang nói về Bản đồ của Gauvas. –

1

Bạn có thể sử dụng

HashMap<Integer, ArrayList<String>> 
6

Bạn có thể làm tương tự với sự giúp đỡ của điều này

Object[][] o = new Object[10][10]; 

o[0][0] = 1; 
o[0][1] ="hello"; 

System.out.println(o[0][0]); 
System.out.println(o[0][1]); 
+0

Hey Yogesh, tôi đang cố gắng làm điều tương tự với o [0] [0] = một mảng các chuỗi và o [0] [1] = một chuỗi. điều này không hiệu quả đối với tôi, liệu công việc này có phù hợp với tôi không? – Tomer

+0

Hãy đăng mã của bạn. –

0

Nếu bạn chỉ muốn có một cột của Chuỗi dat a và một cột của int dữ liệu, đây là những gì bạn có thể xem xét thực hiện:

Khai báo một mảng 2 chiều Chuỗi

String[][] words = new String[][]; 

cột đầu tiên của bạn có thể chứa tất cả các dữ liệu String. Cột thứ hai có thể có dữ liệu số nhưng dưới dạng một Chuỗi. Bạn có thể muốn sử dụng Integer.toString() và Integer.parseInt() phương pháp để làm điều này

words[index][index] = Integer.toString(Integer.parseInt(args)); 

Tôi không chắc chắn chính xác những gì bạn hy vọng sẽ đạt được nhưng bạn có thể xem xét điều chỉnh đoạn này cho phù hợp với nhu cầu của bạn

Các vấn đề liên quan