在一些开发场景下,既需要已键值的方式存储数据列表,还需要在输出的时候保持和插入数据的顺序不变。HashMap满足前者,ArrayList则满足后者,这时候就可以选择Android提供的一种工具类:Pair(搭配ArrayList)。
当然,如果仅仅是为了保证数据的插入和输出顺序一致的话, 可以选择使用LinkedHashMap<K,V>, 但我们知道, Map要求Key不能重复, 如果我们还准许Key可以重复的话, 就只能选择使用"Pair(搭配ArrayList)"这种结构了.
eg.
List<Pair<String, String>> list = new ArrayList<Pair<String, String>>();
1. Pair 实例
Pair生成实例的方式有两种:
Pair pair = new Pair(1, "3");
or
Pair pair = Pair.create("1", 3);
实际上方式二在内部的实现只是对方式一的调用:
public static <A, B> Pair <A, B> create(A a, B b) {
return new Pair<A, B>(a, b);
}
同时可以看出,Pair接收的数据类型是两个泛型,因此可以传入自定义的实体类。
2. 如何取值
Pair内部数据的存储如下:
public class Pair<F, S> {
public final F first;
public final S second;
...
}
仅仅使用了两个public的变量,因此在取值时可以直接取用。
int key = pair.first;
String value = pair.second;
3. 实际使用
List<Pair<String, String>> list = new ArrayList<Pair<String, String>>();
Delivery[] deliveries = mConfigBean.dat.deliveries;
for(int i=0;i<deliveries.length;i++) {
String source = deliveries[i].source;
String placementKey = deliveries[i].placementKey;
if(!TextUtils.isEmpty(source)) {
list.add(new Pair<String, String>(source, placementKey));
}
}
---------DONE.---------
网友评论