2012-04-08 5 views
12

Я хочу создать двумерный массив, в котором я хочу хранить записи из базы данных. Так что скажем, что первый имеет тип int и второй тип String (здесь я описываю только одну запись, поэтому в основном типы столбцов db). Как мне это сделать? Является ли массив правильной структурой данных для этого?Двумерный массив разных типов

ответ

5

Массивы могут содержать только один тип. Если этот тип Object, то он может хранить Object и любой из его подтипов, но это не похоже на то, что вы пытаетесь выполнить здесь.

Похоже, то, что вы описываете, представляет собой 2D-массив для хранения информации о базе данных, причем каждый элемент в массиве является столбцом в одной из строк. Этот не является массивом записей, это массив данных столбцов.

Вместо этого просто сохраните одномерный массив записей, где каждый элемент массива является ссылкой на всю строку DB.

+0

Извините, но я не уверен, что вы подразумеваете под: «каждый элемент массива является ссылкой на всю строку DB». Вся строка DB состоит из двух столбцов разных типов, строки и int. Как сохранить его в одном массиве? – lunar

+1

Что вы используете для доступа к базе данных? Должен быть объект, представляющий строку в таблице. Затем эта строка должна иметь методы, которые вы можете вызвать для доступа к данным столбца в этой строке. Какой бы объект не обертывал строку базы данных, это то, что вам нужно сохранить в вашем массиве. Я имею в виду, это, по сути, таблица базы данных - массив строк. – jefflunt

11

Я не уверен, что следую, но вы можете найти Map<Integer,String>. или Map<Integer,List<String>>. [Взглянуть на List и HashMap]

Map позволяет ассоциацию ключа [Integer] на значение [String или List].

Map также позволяет быстро найти ключ и его прикрепленное значение.

(*) Вы должны использовать Map<Integer,List<String>>, если вы хотите вложить более после этого один String за Integer, или в качестве альтернативы вы можете использовать Apache Commons MultiMap

+1

Карта , если вы это, чем java, не разрешаете запись для дубликата Integer. –

+0

@yogeshprajapata. Вы могли бы использовать один из 'MultiMap' из Guava или Apache, чтобы это разрешить. – Jeffrey

+0

@ Джеффри, но вы не упомянули здесь, что говорите о карте Гаува. –

1

Вы можете использовать

HashMap<Integer, ArrayList<String>> 
6

Вы можете сделать то же самое вещь с помощью этого

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

Эй, Йогеш, я пытаюсь сделать то же самое с o [0] [0] = массив строк и o [0] [1] = a String. это не работает для меня, должно ли это работать для меня? – Tomer

+0

Отправьте свой код, пожалуйста. –

0

Если вы просто хотите иметь один столбец String dat а и еще один столбец ИНТ данных, это то, что вы можете рассмотреть возможность сделать:

Объявите массив 2 мерной струны

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

Вашего первый столбец может содержать все данные String. Второй столбец может содержать числовые данные, но в виде строки. Вы можете использовать Integer.toString() и Integer.parseInt() методы, чтобы сделать это

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

Я не уверен, что именно вы надеетесь достичь, но вы можете рассмотреть вопрос об изменении этого фрагмента в соответствии с вашими потребностями

Смежные вопросы