具有多于一列的动态数组

时间:2014-10-28 19:44:26

标签: java android arrays

我需要将不同类型的DATA存储在与我的android应用程序中的一个键(或一个ID)相关联的同一个“数组”中,我想知道是否有办法创建HashMaps(或等效的动态数组)有多列内容。比如这样。

HashMap<Integer, String, LatLng, Marker> myHashMap = new HashMap<Integer, String, LatLng, Marker>();

提前感谢任何想法。

3 个答案:

答案 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;检查真实类型,这不是最佳做法。