今天突然想到一个问题,即ArrayList的分组问题,person对象保存在ArrayList中,如何按部门再进行分组,每个部门的person对象存放到各自的一个ArrayList中,再将产生的若干个List<Person>保存到List<List<Person>>,最后将生成的List<List<Person>>转换为Person[][],我的代码如下:
POJO类
Map转为二维数组
package test;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
public class ListTest {
public static void main(String[] args) {
List<Person> persons = ListTest.getPersons();
String[] set = ListTest.getCompany(persons);
List<List<Person>> list = ListTest.getLists(set, persons);
Person[][] ps = ListTest.getArrayPerson2(list);
for (Person[] persons2 : ps) {
for (Person person : persons2) {
System.out.println(person.getId()+","+person.getName());
}
}
}
/*将List<List<Person>>转换为二维数组Person[][]*/
public static Person[][] getArrayPerson2(List<List<Person>> list){
Person[][] ps = new Person[list.size()][];
for (int i = 0; i < list.size(); i++) {
ps[i] = list.get(i).toArray(new Person[list.get(i).size()]);
}
return ps;
}
/*将每个部门的对象保存到各自的ArrayList<Person>中,再将所有的ArrayList<Person>保存到List<List<Person>>*/
public static List<List<Person>> getLists(String[] set, List<Person> persons){
List<List<Person>> list = new ArrayList<List<Person>>();
for(int j=0;j<set.length;j++){
List<Person> pp = new ArrayList<Person>();
for(int x=0;x<persons.size();x++){
Person p = persons.get(x);
if(p.getComparny().equals(set[j])){
pp.add(p);
}
}
list.add(pp);
}
return list;
}
/*获取部门,将其存在一个String[]中*/
public static String[] getCompany(List<Person> list){
Set<String> sets = new HashSet<String>();
for (Person person : list) {
sets.add(person.getComparny());
}
String[] set = new String[sets.size()];
Iterator<String> it = sets.iterator();
int i = 0;
while(it.hasNext()){
set[i]=it.next();
i++;
}
return set;
}
/*数据模拟*/
public static List<Person> getPersons(){
List<Person> persons = new ArrayList<Person>();
Person p1 = new Person(); Person p2 = new Person();
p1.setId("10010"); p2.setId("10011");
p1.setName("小李"); p2.setName("小杨");
p1.setComparny("县防办"); p2.setComparny("县防汛指挥部");
p1.setPosition("副厅长"); p2.setPosition("厅长");
p1.setAddress("镇海1"); p2.setAddress("镇海1");
p1.setMobile("13734334323"); p2.setMobile("13134334323");
p1.setTelephone("8219324"); p2.setTelephone("8219324");
Person p3 = new Person(); Person p4 = new Person();
p3.setId("10012"); p4.setId("10011");
p3.setName("小催"); p4.setName("小橘");
p3.setComparny("县防办"); p4.setComparny("乡防办");
p3.setPosition("副厅长"); p4.setPosition("厅长");
p3.setAddress("镇海1"); p4.setAddress("镇海2");
p3.setMobile("13834334323"); p4.setMobile("13534334323");
p3.setTelephone("8219324"); p4.setTelephone("8219324");
Person p5 = new Person(); Person p6 = new Person();
p5.setId("10012"); p6.setId("10011");
p5.setName("小刘"); p6.setName("小姜");
p5.setComparny("县防汛指挥部"); p6.setComparny("乡防办");
p5.setPosition("副厅长"); p6.setPosition("厅长");
p5.setAddress("镇海1"); p6.setAddress("镇海2");
p5.setMobile("13834334323"); p6.setMobile("13534334323");
p5.setTelephone("8219324"); p6.setTelephone("8219324");
persons.add(p1); persons.add(p2); persons.add(p3); persons.add(p4);
persons.add(p5); persons.add(p6);
return persons;
}
}
POJO类
package test;
public class Person {
private String id;
private String name;
private String comparny;
private String position;
private String address;
private String mobile;
private String telephone;
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;
}
public String getComparny() {
return comparny;
}
public void setComparny(String comparny) {
this.comparny = comparny;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
}
Map转为二维数组
private String[][] TwoDimensionalArray(Map<String, String> map) {
if (null == map || map.size() == 0)
return null;
String[][] twoDarray = new String[map.size()][2];
String[] keys = map.keySet().toArray(new String[map.size()]);
String[] values = map.values().toArray(new String[map.size()]);
for (int row = 0; row < twoDarray.length; row++) {
twoDarray[row][0] = keys[row];
twoDarray[row][1] = values[row];
}
return twoDarray;
}