我需要类似三维的东西(如列表或地图),我在循环中填充2个字符串和一个整数。但是,遗憾的是我不知道使用哪种数据结构以及如何使用。
// something like a 3-dimensional myData
for (int i = 0; i < 10; i++) {
myData.add("abc", "def", 123);
}
答案 0 :(得分:19)
创建一个将三个封装在一起的对象,并将它们添加到数组或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实现所需。
答案 1 :(得分:12)
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();
}
});
如果您想覆盖底层结构,可以轻松更改它。
答案 2 :(得分:4)
只需创建一个类
class Data{
String first;
String second;
int number;
}
答案 3 :(得分:1)
答案取决于值之间的关系。
1)您只想按照它们的相同顺序存储所有三个:创建一个包含所有三个元素的自定义类,并将此类的实例添加到List<MyData>
。
2)你想将第一个字符串与第二个和第三个数据相关联(并将第二个数据与int相关联):创建一个Map&gt;并向其添加元素(您必须为每个新的第一个字符串创建内部地图)
3)你不想保留重复,但你不想/需要地图:创建一个自定义类型(a'la 1))并将它们放在Set<MyData>
3)混合搭配
答案 4 :(得分:-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);
}
}