我习惯使用PHP,但最近我一直在使用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中?注意;我想使用字符串作为数组索引(在第一维中),我不知道数组的确定大小..

有帮助吗?

解决方案

您可以使用地图和列表(这些都是以多种方式实现的接口,供您选择最适合您的情况)。

有关更多信息,请查看地图的教程。和列表也许你应该从收藏教程。

一个例子:

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&lt; String,List&lt; String&gt;&gt; 。这将允许您将字符串作为键/索引用于外部映射,并将结果作为字符串列表作为值。您可能希望对外部映射使用 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"));
}};

你想要地图,几乎任何东西都是关键。在大多数情况下 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

预先警告 Vector 是Collections框架的遗留代码。它同步对其元素的访问,从而降低性能。大多数使用List的用例都不需要这种线程安全性,即使你这样做了,我也更倾向于使用 CopyOnWriteArrayList

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top