13

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

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

6 回答 6

20

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

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 实现。

于 2012-05-01T15:53:55.260 回答
14

Google 的Guava代码如下所示:

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);
}

上面的代码将在 HashMap 中构造一个 HashMap,其构造函数如下所示:

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();
    }
});

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

于 2013-05-18T22:11:25.300 回答
5

只需创建一个类

 class Data{
  String first;
  String second;
  int number;
 }
于 2012-05-01T15:53:29.613 回答
1

答案取决于值之间的关系。

1)您只想按照它们来的顺序存储所有三个:创建一个包含所有三个元素的自定义类,并将该类的一个实例添加到List<MyData>.

2)您想将第一个字符串与第二个和第三个数据相关联(并将第二个与 int 相关联):创建一个 Map> 并向其中添加元素(您必须为每个新的第一个创建内部映射细绳)

3)您不想保留重复项,但您不想/不需要地图。:创建自定义类型(a'la 1))并将它们放在Set<MyData>

3)混搭

于 2012-05-01T15:58:05.603 回答
0

如果你不想创建一个类:

Map<String, Map<String,Integer>> myData;
于 2021-09-12T16:38:31.860 回答
-1

您可以使用此代码!

public class List3D {

    public static class MyList {
        String a = null;
        String b = null;
        String c = null;

        MyList(String a, String b, String c) {
            this.a = a;
            this.b = b;
            this.c = c;
        }
    }

    public static void main(String[] args) {

        List<MyList> myLists = new ArrayList<>();
        myLists.add(new MyList("anshul0", "is", "good"));
        myLists.add(new MyList("anshul1", "is", "good"));
        myLists.add(new MyList("anshul2", "is", "good"));
        myLists.add(new MyList("anshul3", "is", "good"));
        myLists.add(new MyList("anshul4", "is", "good"));
        myLists.add(new MyList("anshul5", "is", "good"));

        for (MyList myLista : myLists)
            System.out.println(myLista.a + myLista.b + myLista.c);
    }
}
于 2017-10-07T12:59:37.970 回答