javase基本的api的使用
场景一:
list或者array根据一个字段进行分组,得到的结果是Map<String,List<?>>这种类型,key为分组字段的表示,list集合为数据。这种对应一对多关系的数据类型插入比较方便。例如:内容表----》附件, 内容表---》媒体,内容表---》图片多对多关心。中间有一个关联表就是表示对应这三个关联的类型,关联表中有一个字段类型是为了区分附件,媒体,图片的。
// 得到分组的key
Set<String> keys = new HashSet<String>();
for (Model model : models) {
keys.add(model.getExtCode());
}
Map<String, List<Model>> results = new HashMap<String, List<Model>>();
for (String key : keys) {
List<Model> temple = new ArrayList<>();
for (Model model : models) {
if (key.equals(model.getExtCode())) {
temple.add(model);
}
}
results.put(key, temple);
}
方式二:
Map<String, List<Model>> results = new HashMap<String, List<Model>>();
for (Model model : models) {
List<Model> list = results.get(model.getExtCode());
if(null == list) {
list = new ArrayList<Model>();
results.put(model.getExtCode(), list);
}
list.add(model);
}
model就是最初的数据源,理由有个区分附件,媒体,内容表的字段为extCode。这样存入数据库就有好存了。
package com.lgy.model;
public class Model {
private String extCode;
private Integer age;
private String name;
public String getExtCode() {
return extCode;
}
public void setExtCode(String extCode) {
this.extCode = extCode;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}