【问题标题】:convert fetched data into string , string array map将获取的数据转换为字符串,字符串数组映射
【发布时间】:2012-04-30 21:10:46
【问题描述】:

我正在从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 并将数据发送到列出的电话号码的数组。那么如何将获取的数据转换为字符串数组样式的键?

【问题讨论】:

    标签: java android collections hashmap


    【解决方案1】:

    我会创建一个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 Collections 有一个多地图,您可以开箱即用,但我想您会同意这已经足够了。

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

    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。但是您应该从我发布的代码中看到这个想法。

    【讨论】:

    • 如果我也想存储名称字段怎么办?姓名 url [ phone1 , phone 2] ?
    猜你喜欢
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    相关资源
    最近更新 更多