将多个哈希映射合并为一个。JAVA

将多个哈希映射合并为一个。JAVA,java,android,google-maps,arraylist,hashmap,Java,Android,Google Maps,Arraylist,Hashmap,我有下面的代码可以工作,但是如果有任何方法,我怎么能做得更短。我会详细解释 我宣布这三项为全球: private Map<Marker, String> pictureinfo = new HashMap<Marker, String>(); private Map<Marker, String> latitudeinfo = new HashMap<Marker, String>(); private Map<Marker, String&

我有下面的代码可以工作,但是如果有任何方法,我怎么能做得更短。我会详细解释

我宣布这三项为全球:

private Map<Marker, String> pictureinfo = new HashMap<Marker, String>();
private Map<Marker, String> latitudeinfo = new HashMap<Marker, String>();
private Map<Marker, String> longitudeinfo = new HashMap<Marker, String>();
poza、纬度和经度是从数据库中获取的,但这是无关的。此外,在代码中,我有一个用于多个标记的自定义信息窗口,其中我有:

String picture = pictureinfo.get(marker);
latcoord.setText(latitudeinfo.get(marker));
lngcoord.setText(longitudeinfo.get(marker));

我怎样才能缩短这些线?代码是有效的,但我相信还有另一种方法,更短、更优化。我对HashMaps和ArrayList没有太多经验,因此任何指导都会受到欢迎,我想学习,谢谢。

您可以创建一个包含信息字段的包装器对象,然后将这些包装器存储在单个映射中

然而,我不会为这种优化而操心太多,因为它可能不会带来太多好处

我会做什么(尽管这只是一种方式):

类位置信息{
私有字符串latitudeInfo;
私有字符串longitudeInfo;
...
}
类图片信息{
私有字符串描述;//我假设pictureInfo就是这个意思
私人位置信息位置信息;
...
}
地图信息地图=。。。;
我不确定代码的确切语义,所以这只是一个粗略的近似值。基本上,我会把一个位置的信息放在一个类中,因为这不一定是特定于图片的。根据语义的不同,
LocationInfo
也可以包含位置本身——在这种情况下,我会将类命名为
location
。(顺便说一句,您正在放置
latitude+”
等。因此我假设您最初有原始数字。如果是这种情况,那么我会将它们未转换存储在
LocationInfo
类中)

PictureInfo
然后包含一个描述、它自己的
LocationInfo
以及它需要的任何其他内容。然后您只需在地图中存储
PictureInfo
实例。(如果
标记
仅用于
图片信息
,则它也可以是该类的成员)


正如您所看到的,代码可能不会变短,但通常更短并不是更好,因为代码可能更难理解和维护。通常,您希望代码具有更多的结构,例如,通过将相关数据封装到有意义的类中等。

您可以创建一个包含信息字段的包装器对象,然后将这些包装器存储在一个映射中

然而,我不会为这种优化而操心太多,因为它可能不会带来太多好处

我会做什么(尽管这只是一种方式):

类位置信息{
私有字符串latitudeInfo;
私有字符串longitudeInfo;
...
}
类图片信息{
私有字符串描述;//我假设pictureInfo就是这个意思
私人位置信息位置信息;
...
}
地图信息地图=。。。;
我不确定代码的确切语义,所以这只是一个粗略的近似值。基本上,我会把一个位置的信息放在一个类中,因为这不一定是特定于图片的。根据语义的不同,
LocationInfo
也可以包含位置本身——在这种情况下,我会将类命名为
location
。(顺便说一句,您正在放置
latitude+”
等。因此我假设您最初有原始数字。如果是这种情况,那么我会将它们未转换存储在
LocationInfo
类中)

PictureInfo
然后包含一个描述、它自己的
LocationInfo
以及它需要的任何其他内容。然后您只需在地图中存储
PictureInfo
实例。(如果
标记
仅用于
图片信息
,则它也可以是该类的成员)


正如您所看到的,代码可能不会变短,但通常更短并不是更好,因为代码可能更难理解和维护。通常,您希望代码具有更多的结构,例如通过将相关数据封装到有意义的类中等。

不确定您的目的,但乍一看,此代码损害了面向对象性。您在地图中保存的数据似乎与某个标记对象紧密相连,并且应该在其中

class Marker{
    ....

    String pictureInfo;
    String latitude;
    String longitude;

    ...
}
与此相反:

pictureinfo.put(marker, poza);
latitudeinfo.put(marker, latitude + "");
longitudeinfo.put(marker, longitude + "");
这:


不确定您的目的,但乍一看,这段代码损害了面向对象性。您在地图中保存的数据似乎与某个标记对象紧密相连,并且应该在其中

class Marker{
    ....

    String pictureInfo;
    String latitude;
    String longitude;

    ...
}
与此相反:

pictureinfo.put(marker, poza);
latitudeinfo.put(marker, latitude + "");
longitudeinfo.put(marker, longitude + "");
这:


我会考虑到这一点,但为了我自己的利益,我想学习如何做到这一点,你能详细阐述你的帖子吗?我会考虑到这一点,但为了我自己的利益,我想学习如何做到这一点,你能详细阐述你的帖子吗?
marker.setPictureInfo(poza);
marker.setLatitudeInfo(String.valueof(latitude));
marker.setLongitudeInfo(String.valueof(longitude));


String picture = marker.getPictureInfo();
latcoord.setText(marker.getLatitudeInfo());
lngcoord.setText(marker.getLongitudeInfo());