2012-04-08 71 views
12

我想创建一个二维数组,我想从数据库中存储记录。因此,可以说第一个是int类型,第二个是String(这里我只描述了一条记录,所以基本上是db列的类型)。我该怎么做?数组是正确的数据结构吗?不同类型的二维数组

回答

5

数组只能包含一种类型。如果这种类型碰巧是Object,那么它可以存储Object及其任何子类型,但这听起来并不像你想要在这里完成的。

听起来像你所描述的是一个2D数组来存储数据库信息,数组中的每个元素都是其中一行中的一列。这不是记录数组,它是一个列数据数组。

相反,只需存储一维记录数组,其中数组的每个元素都是对整个DB行的引用。

+0

我很抱歉,但我不确定你的意思是:“数组中的每个元素都是对整个DB行的引用”。整个DB行由两列不同类型的字符串和整数组成。我如何将它存储在一个数组中? – lunar 2012-04-08 14:24:05

+1

你用什么来访问数据库?必须有一个对象表示表中的一行。然后,该行必须具有可调用的方法来访问该行中的列数据。不管对象包装数据库行是你需要存储在你的数组中。我的意思是,这基本上是一个数据库表 - 一个行数组。 – jefflunt 2012-04-08 14:26:16

11

我不确定我在追随,但您可能正在寻找Map<Integer,String>。或Map<Integer,List<String>>。 [对List一看,HashMap]

Map允许值[StringList]键[Integer]的关联。

Map还允许快速查找密钥及其附加值。

(*)你应该使用Map<Integer,List<String>>如果要附加更多的则每Integer一个String,或者您可以使用Apache公地MultiMap

+1

Map 如果你这个比java不允许记录重复的Integer。 – 2012-04-08 14:04:10

+0

@yogeshprajapata尽管你可以使用Guava或Apache的'MultiMap'中的一个来实现这个功能。 – Jeffrey 2012-04-08 14:04:58

+0

@Jeffrey,但你在这里没有提到你正在谈论Gauvas的地图。 – 2012-04-08 14:10:00

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

嘿Yogesh,我正在试图做o [0] = 0的字符串和o [0] [1] =一个字符串相同。这对我不起作用,如果这对我有用? – Tomer 2016-12-03 21:51:07

+0

请发布您的代码。 – 2016-12-05 06:22:00

0

如果你只是想有一列字符串dat和int数据的另一列,这是你可以考虑做什么:

声明一个二维字符串数组

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

你的第一列可以包含所有的字符串数据。第二列可以具有数字数据但是以字符串的形式。您可能需要使用Integer.toString()和的Integer.parseInt()方法来做到这一点

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

我不知道究竟你希望达到什么样的,但你可能要考虑修改这个片段,以满足您的需求