我还不太熟悉Java。我有一个应该包含List的类。可以想象这个列表代表表中的一行(列名,某种类型的值):
Name - "Oskar",
Age - 28,
weight - 75.5,
weightUnit - "kilogram",
...
由于列表的内容应该灵活,我不能使用类成员变量。 基本上,程序员对内容视而不见。但是,在某些时候 - 我必须用双值提取所有条目。你会如何实现这样的东西?
答案 0 :(得分:3)
将信息封装在对象中,然后获得所述对象的列表。例如,
public final class TableRow{
private final String name;
private final int age;
private final double weight;
private final String weightUnit;
public TableRow(String name, int age, double weight, String weightUnit){
...
}
// include accessors
}
然后另一个类中的列表声明就是这样,
List<TableRow> list = new ArrayList<TableRow>();
答案 1 :(得分:1)
您可以创建一个表示列的类,然后将一行表示为列列表:
public class Column {
private String name;
private Class clazz;
private Object value;
public Column(String name, Class clazz, Object value) {
this.name = name;
this.clazz = clazz;
this.value = value;
}
// ...
}
您的数据将是:
List<Column> row = new ArrayList<Column>();
row.add(new Column("Name", String.class, "Oskar"));
row.add(new Column("Age", Integer.class, 28));
row.add(new Column("weight", Double.class, 75.5));
row.add(new Column("weightUnit", String.class, "kilogram"));
但是,您似乎正在尝试创建数据库,因此您可能希望Table
类具有List<ColumnDescriptor>
,其中ColumnDescriptor
就像高于Column
类,只有没有值 - 只是名称和类型。然后可能有一个TableRow
类,其中包含所有值的List<Object>
。向表中添加行时,您需要验证这些值是否与该表的列类型兼容。
您可能希望了解JDBC
为灵感而设计的方式。支持所有必需的通用性,功能性以及使其全部类型安全是很多工作。除非您真的需要ORM
工具,自定义报告解决方案或实际数据库,否则您可能需要重新考虑设计并询问是否需要这么多的通用性。 (“做最简单的事可能有用。”)
答案 2 :(得分:0)
您可以使用HashMap
Map<String, String> m = new HashMap<String, String>();
答案 3 :(得分:0)
如果您不想创建一个类。尝试这样的事情。
ArrayList<List> arrayList = new ArrayList<>();
arrayList.add(Arrays.asList("String 1", 2011.57, 5));
arrayList.add(Arrays.asList("String 2", 201.01, 16));
arrayList.add(Arrays.asList("String 3", 2012, NULL));
arrayList.add(Arrays.asList("String 4", 20.1, 19));
for (List list : arrayList) {
System.out.println(
list.get(0) + " " + list.get(1) + " " + list.get(2));
}
在上面的示例中。您可以创建一个ArrayList来存储分别具有{String,Double,Integer}数据类型的List集合。
注意:在
Java
中创建不同类型的列表是不明智的做法