java - 将多个 Hashmap 合而为一。 java

标签 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> longitudeinfo = new HashMap<Marker, String>();

我有一个名为markers()的方法,它有一个相当大的代码,但在代码的某个地方,我有:

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

poza,纬度和经度是从数据库中获取的,但这无关紧要。在代码中,我有一个用于多个标记的自定义信息窗口,其中我有:

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

如何缩短这些行?该代码可以工作,但我确信还有另一种更短且最佳的方法。我对 HashMap 和 ArrayList 没有太多经验,所以任何指导将不胜感激,我想学习,谢谢。

最佳答案

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

不过,我不会太在意这样的优化,可能不会有太大收获。

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

class LocationInfo {
   private String latitudeInfo;
   private String longitudeInfo;     
   ...
}

class PictureInfo {      
  private String description; //I assume that's what pictureInfo means
  private LocationInfo locInfo;
  ...
}

Map<Marker, PictureInfo> infoMap = ...;

我不确定您的代码的确切语义,因此这只是一个粗略的近似值。基本上我会将有关位置的信息放入一个类中,因为这不一定是特定于图片的。取决于语义LocationInfo还可以包含位置本身 - 在这种情况下,我会将类命名为 Location 。 (顺便说一句,你输入了 latitude + "" 等,所以我假设你最初有原始数字。如果是这种情况,那么我会将它们存储在 LocationInfo 类中)。

PictureInfo然后包含一个描述,它自己的 LocationInfo以及它需要的其他任何东西。然后你只需存储 PictureInfo map 中的实例。 (如果 Marker 仅用于 PictureInfo ,它也可能是该类的成员)。

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

关于java - 将多个 Hashmap 合而为一。 java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26882203/

相关文章:

java - 我的java代码从java文件eclipse中消失

android - 为什么当我使用 setClickable(true) 它不显示点击 Action

swift - 如何在google maps sdk中使用函数外的变量

java - 需要在 Netbeans 上创建一个 WIZARD(jDialog vs CardLayout)?

java - @Singleton、@Startup、@PostConstruct 不适用于 EJB3.1 和 Glassfishv3.0.1

弹出的Android超链接

android - 谷歌地图安卓: Live update position of multiple markers

javascript - 检测圆是否在 map 内

java - 如何在 java 中映射 TYPE TABLE OF VARCHAR2(5)?

java - Google Guice 中的计算常量