Java:数组与向量
问题描述:
我习惯于使用PHP,但最近我一直在使用Java,而且我很头痛,想要解决这个问题。我想保存在Java中这样表示:Java:数组与向量
Array ( ["col_name_1"] => Array ( 1 => ["col_value_1"], 2 => ["col_value_2"], ... , n => ["col_value_n"] ), ["col_name_n"] => Array ( 1 => ["col_value_1"], 2 => ["col_value_2"], ... , n => ["col_value_n"] ) )
是否有一个干净的方式(即无脏代码)保存在Java中这件事情?注意;我想使用字符串作为数组索引(在第一维中),我不知道数组的确定大小。
答
您可以使用地图和列表(实施这些都是接口以多种方式让您选择最适合您的情况)。
欲了解更多信息,请查看教程Map和List,也许你应该从Collections教程开始。
一个例子:
import java.util.*;
public class Foo {
public static void main(String[] args) {
Map<String, List<String>> m = new HashMap<String, List<String>>();
List<String> l = new LinkedList<String>();
l.add("col_value_1");
l.add("col_value_2");
//and so on
m.put("col_name_1",l); //repeat for the rest of the colnames
//then, to get it you do
List<String> rl = m.get("col_name_1");
}
}
答
你想要一个Map,它是几乎任何东西的关键。 HashMap在大多数情况下工作。
就是这样。
List<String> col1Vals = new java.util.ArrayList<String>();
col1Vals.add("col_value_1");
col1Vals.add("col_value_2");
Map<String, List<String>> map = new HashMap<String, List<String>>();
map.put("col_name_1", col1Vals);
如果你想要的东西简单,在commons-lang库有MultiMap。
答
尝试使用Map<String, List<String>>
。这将允许您使用Strings作为外键映射的键/索引,并将结果作为字符串列表作为值。您可能需要使用HashMap
作为外部地图,ArrayList
作为内部列表。
如果你想一些干净的代码,类似于你给初始化的PHP,你可以做这样的事情:
Map<String, List<String>> columns = new HashMap<String, List<String>>() {{
put("col_name_1", Arrays.asList("col_val_1", "col_val_2", "col_val_n"));
put("col_name_2", Arrays.asList("col_val_1", "col_val_2", "col_val_n"));
put("col_name_n", Arrays.asList("col_val_1", "col_val_2", "col_val_n"));
}};
答
事先警告的Vector是集合框架遗留代码。它同步访问其元素,这会降低性能。大多数使用List的用例都不需要这种线程安全性,即使你这样做,我也会更倾向于使用CopyOnWriteArrayList。