我需要将不同类型的DATA存储在与我的android应用程序中的一个键(或一个ID)相关联的同一个“数组”中,我想知道是否有办法创建HashMaps(或等效的动态数组)有多列内容。比如这样。
HashMap<Integer, String, LatLng, Marker> myHashMap = new HashMap<Integer, String, LatLng, Marker>();
提前感谢任何想法。
答案 0 :(得分:1)
private class Row {
public Integer i;
public String s;
public LatLng ll;
public Row(Integer i, String s, LatLng ll) {
this.i = i;
this.s = s;
this.ll = ll;
}
}
List<Row> rows = new ArrayList<Row>();
这是半伪代码,但我认为你明白
可以使用
将新行添加到列表中rows.add(new Row(new Integer(1), "a string", new LatLng(51.448495, 5.470877));
可以使用
编辑行rowIndex = 3;
Row row = rows.get(rowIndex);
row.i = 2; //give a new value
//etc
编辑:用真实代码替换pseude代码
答案 1 :(得分:1)
map只是一个关键和值,所以HashMap没什么意义
Java不允许您以这种方式定义数据。类A的集合应仅包含A类实例或其子类型。
编辑:从您提供的数据看来,您似乎希望处理数据库表中的每一行。最合适的数据结构是具有与数据库表对应的字段的类。
从结果集中获取行时,只需创建此类的实例。
Class mysqlTuple
{
public Integer id;
public String message;
public LatLng latitude;
public Marker longitude;
}
mysqlTupe [] mysqlTable = new mysqlTupe [];
答案 2 :(得分:0)
这很大程度上取决于你想要实现的目标 一种选择是保留3个不同的地图:
Map<String, Integer>
Map<String,Marker>
Map<String,LatLng>
另一种选择是制作:
Map<String,Object>
然而,你必须&#39; instanceof&#39;检查真实类型,这不是最佳做法。