繁体   English   中英

将获取的数据转换为字符串,字符串数组映射

[英]convert fetched data into string , string array map

我正在从android中的sqlite获取数据,如下

  URL                     PHONE
---------------------------------
/test/img1.png          98989898
/test/img1.png          61216121
/test/img2.png          75757575
/test/img2.png          40404040
/test/img3.png          36363636

现在我想创建一个这样的地图,其中存储数据如下

   /test/img1.png          [98989898 , 61216121 ]
   /test/img2.png          [75757575 , 40404040 ]
   /test/img3.png          [36363636]

这样我就可以将整个地图传递给该函数,该函数最终在后台获取图像url并将数据发送到列出的电话号码数组中。 那么,如何将获取的数据转换为字符串数组样式的键?

我将创建一个Map<String, List<String>> (又名“多图”)。 如果使用List<String>则在开始之前不必知道给定URL的电话号码。 如果选择阵列路由,则不是这样。

Map<String, List<String>> results = new HashMap<String, List<String>>();
while (rs.next()) {
    String url = rs.getString(1);
    String phone = rs.getString(2);
    List<String> phones = (results.contains(url) ? results.get(url) : new ArrayList<String>());
    phones.add(phone);
    results.put(url, phones);
}

Google收藏夹有一个多张地图,您可以直接使用它,但是我认为您已经足够了。

如果要存储更多项(例如名称),则应开始考虑一个将所有项封装在一起的对象。 Java是一种面向对象的语言。 您听起来好像觉得自己的思维水平太低感到内gui。 字符串,基元和数据结构是对象的构建块。 也许您在这里需要一个人:

package model;

public class Person {
    private String name;
    private Map<String, List<String>> contacts;

    // need constructors and other methods.  This one is key
    public void addPhone(String url, String phone) {
        List<String> phones = (this.contacts.contains(url) ? this.contacts.get(url) : new ArrayList<String>());
        phones.add(phone);
        this.contacts.put(url, phones);
    }
}

剩下的我留给你。

如果您采用这种方式,则需要将结果集映射到Person中。 但是您应该从我发布的代码中看到这个想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM