3 维列表或地图

2022-09-04 05:36:26

我需要一个类似3维的东西(如列表或地图),我在循环中用2个字符串和一个整数填充。但是,不幸的是,我不知道使用哪种数据结构以及如何使用。

// something like a 3-dimensional myData
for (int i = 0; i < 10; i++) {
    myData.add("abc", "def", 123);
}

答案 1

创建一个将这三者封装在一起的对象,并将它们添加到数组或 List 中:

public class Foo {
    private String s1;
    private String s2; 
    private int v3;
    // ctors, getters, etc.
}

List<Foo> foos = new ArrayList<Foo>();
for (int i = 0; i < 10; ++i) {
    foos.add(new Foo("abc", "def", 123);
}

如果要插入到数据库中,请编写一个 DAO 类:

public interface FooDao {
    void save(Foo foo);    
}

根据需要使用 JDBC 实现。


答案 2

谷歌的番石榴代码看起来像这样:

import com.google.common.collect.Table;
import com.google.common.collect.HashBasedTable;

Table<String, String, Integer> table = HashBasedTable.create();

for (int i = 0; i < 10; i++) {
    table.put("abc", "def", i);
}

上面的代码将在哈希映射中构造一个哈希映射,构造函数如下所示:

Table<String, String, Integer> table = Tables.newCustomTable(
        Maps.<String, Map<String, Integer>>newHashMap(),
        new Supplier<Map<String, Integer>>() {
    @Override
    public Map<String, Integer> get() {
        return Maps.newHashMap();
    }
});

如果要覆盖底层结构,可以轻松更改它。