我正在从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/