我是 Java 新手,我正在制作一个用于包装此类数据的结构:
Object:
name:'Obj1'
otherAttr:'...'
Object:
name:'Obj2'
otherAttr:'...'
Object:
...
我知道我可以制作我的自定义“对象”类*,但是为了使用内置 java 结构,我使用 List<Map<String, String>>
.因此,要设置新的:
List<Map<String, String>> objects = new ArrayList<Map<String, String>>();
foreach(databaseRow){
Map<String, String> newObject = new HashMap<String, String>();
newObject.put('name', '...');
newObject.put('otherAttr', '...');
objects.add(newObject);
}
我有两个问题:
1- 如果结构的初始化(作为 ArrayList
和 HashMap
)是大量 Java 结构之间的最佳选择。
2- 如果有一个内置结构不暗示所有这些初始化(对于 List 和每个 Map)。
谢谢!
(*)澄清:我在我的代码中使用了大量类似的结构,我会避免创建大量自定义类。但如果这是最好的方法,那就去做吧!
最佳答案
如果您的每个对象都只有这两个属性(name 和 otherAttr),您可以创建一个带有字段的类而不是使用 Map:
public class Data {
private final String name;
private final String otherAttr;
// constructor, getters
}
即使您有更多属性,这样做也可能很有用,因为它为您提供了编译时安全性——您永远不会拼错 key 。您还可以拥有不同类型的字段,而不仅仅是必须解析的字符串。
为了使您的代码更有意义,您还可以扩展现有的数据结构,例如:
public class Data extends HashMap<String, String> {
// extra convenience constructors
}
public class DataList extends ArrayList<Data> {
// extra convenience constructors
}
关于您要使用哪些集合的问题,这实际上取决于您的需要。 ArrayList
通常是一个不错的选择(或线程安全的 Vector
),除非您经常修改列表的开头,在这种情况下 LinkedList
将是受到推崇的。 HashMap
具有很好的性能,但如果您需要排序数据,您可以使用 TreeMap
代替。如果你需要维护插入顺序,LinkedHashMap
将是最好的。
关于java - List<Map<String, String>> 备选方案 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28741116/