java - 将获取的数据转换为字符串、字符串数组映射

标签 java android collections hashmap

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

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

现在我想创建这样一个 map ,它存储数据如下

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

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

最佳答案

我会创建一个Map<String, List<String>> (又名“多 map ”)。如果您使用 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 Collection 有一个多 map ,您可以开箱即用,但我想您会同意这已经足够了。

如果您想存储更多项目(例如名称),您应该开始考虑一个对象,将所有这些项目封装成一个连贯的事物。 Java 是一种面向对象的语言。听起来你似乎因为思想水平太低而感到内疚。字符串、基元和数据结构是对象的构建 block 。也许您在这里需要一个人:

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);
    }
}

剩下的就交给你了。

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

关于java - 将获取的数据转换为字符串、字符串数组映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10226635/

相关文章:

java - SftpChannel.rename 失败,但 mv 命令有效。可能的原因是什么?

java - 在 Java 中将 String[] 插入到 String[] 中?

android - Greenrobot 的 Eventbus : Two Fragments calling async tasks jobs got Eventbus confused

javascript - 未在 webview android 中加载的 Css 背景图片

java - HashMap 的迭代器是故障安全的吗?

java - 如何为我的 ClusterManager 使用 onClusterItemRendered 等函数?

java - 矩阵表达式计算

android - connectivitymanager.getActiveNetworkInfo() 在 Internet 关闭时返回 true (Android)?

java - 如何使用列表作为值遍历 LinkedHashMap

c++ - 从自定义集合中读取数据(结构数组)