67,513
社区成员
发帖
与我相关
我的任务
分享
public static void main(String[] args) {
List<Bean> list = new ArrayList<>();
list.add(new Bean("1010", "admin"));
list.add(new Bean("1020", "xiaohua"));
list.add(new Bean("1010", "admin"));
list.add(new Bean("1020", "xiaohua"));
Set<String> ids = new HashSet<>();
for (Bean item : list) {
ids.add(item.getId());
}
List<Bean> tempList;
for (String id : ids) {
tempList = new ArrayList<>();
for (Bean item : list) {
if (id.equals(item.getId())) {
tempList.add(item);
}
}
//分类获取tempList
}
}
class JavaBean {
public JavaBean(String id, String name) {
this.id = id;
this.name = name;
}
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private String name;
public JavaBean() {
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "{用户ID:" + this.id + ", 用户名:" + this.name + " }";
}
}
public static void main(String[] args) {
List<JavaBean> list = new ArrayList<JavaBean>();
list.add(new JavaBean("1010", "admin"));
list.add(new JavaBean("1010", "admin"));
list.add(new JavaBean("1020", "xiaohua"));
list.add(new JavaBean("1020", "xiaohua"));
List<List<JavaBean>> groupList = getListByGroup(list);
for (List<JavaBean> bean : groupList) {
System.out.println(bean);
}
}
private static List<List<JavaBean>> getListByGroup(List<JavaBean> list) {
List<List<JavaBean>> result = new ArrayList<List<JavaBean>>();
Map<String, List<JavaBean>> map = new TreeMap<String, List<JavaBean>>();
for (JavaBean bean : list) {
if (map.containsKey(bean.getId())) {
List<JavaBean> t = map.get(bean.getId());
t.add(new JavaBean(bean.getId(), bean.getName()));
new ArrayList<JavaBean>().add(new JavaBean(bean.getId(), bean
.getName()));
map.put(bean.getId(), t);
} else {
List<JavaBean> t = new ArrayList<JavaBean>();
t.add(new JavaBean(bean.getId(), bean.getName()));
map.put(bean.getId(), t);
}
}
for (Entry<String, List<JavaBean>> entry : map.entrySet()) {
result.add(entry.getValue());
}
return result;
}
[/quote
if判断里 包含的时候 new ArrayList<JavaBean>().add(new JavaBean(bean.getId(), bean
.getName())); 为什么还要创建这个list呢
class JavaBean {
public JavaBean(String id, String name) {
this.id = id;
this.name = name;
}
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private String name;
public JavaBean() {
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "{用户ID:" + this.id + ", 用户名:" + this.name + " }";
}
}
public static void main(String[] args) {
List<JavaBean> list = new ArrayList<JavaBean>();
list.add(new JavaBean("1010", "admin"));
list.add(new JavaBean("1010", "admin"));
list.add(new JavaBean("1020", "xiaohua"));
list.add(new JavaBean("1020", "xiaohua"));
List<List<JavaBean>> groupList = getListByGroup(list);
for (List<JavaBean> bean : groupList) {
System.out.println(bean);
}
}
private static List<List<JavaBean>> getListByGroup(List<JavaBean> list) {
List<List<JavaBean>> result = new ArrayList<List<JavaBean>>();
Map<String, List<JavaBean>> map = new TreeMap<String, List<JavaBean>>();
for (JavaBean bean : list) {
if (map.containsKey(bean.getId())) {
List<JavaBean> t = map.get(bean.getId());
t.add(new JavaBean(bean.getId(), bean.getName()));
new ArrayList<JavaBean>().add(new JavaBean(bean.getId(), bean
.getName()));
map.put(bean.getId(), t);
} else {
List<JavaBean> t = new ArrayList<JavaBean>();
t.add(new JavaBean(bean.getId(), bean.getName()));
map.put(bean.getId(), t);
}
}
for (Entry<String, List<JavaBean>> entry : map.entrySet()) {
result.add(entry.getValue());
}
return result;
}
Map<String, FileOutputStream> map = new HashMap<String, FileOutputStream>();
// Write file
for (JavaBean bean : list) {
FileOutputStream os = map.get(bean.getId());
if (os == null) {
os = new FileOutputStream(bean.getId() +".txt");
map.put(bean.getId(), os);
}
os.write(bean.toString().getBytes());
}
// Close stream
Collection<FileOutputStream> fos = map.values();
for (Iterator<FileOutputStream> it = fos.iterator(); it.hasNext();) {
it.next().close();
}
第二种,整体数据量不太大,但重复ID超过数百个胜至千个,此时不能同时打开几百个流写文件。可以先排序然后直接写文件,此时只会有一个流存在。
// 排序这一步可以放在数据库做。
list.sort(new Comparator<JavaBean>() {
@Override
public int compare(JavaBean o1, JavaBean o2) {
return o1.getId().compareTo(o2.getId());
}
});
FileOutputStream fos = null;
String id = null;
// Write file
for (JavaBean bean : list) {
if (bean.getId().equals(id)) {
fos.write(bean.toString().getBytes());
continue;
}
if (fos != null)
fos.close();
fos = new FileOutputStream((id = bean.getId()) + ".txt");
fos.write(bean.toString().getBytes());
}