ArrayList的分组及变换为二维数组
ArrayList的分组及转换为二维数组
今天突然想到一个问题,即ArrayList的分组问题,person对象保存在ArrayList中,如何按部门再进行分组,每个部门的person对象存放到各自的一个ArrayList中,再将产生的若干个List<Person>保存到List<List<Person>>,最后将生成的List<List<Person>>转换为Person[][],我的代码如下:
POJO类
今天突然想到一个问题,即ArrayList的分组问题,person对象保存在ArrayList中,如何按部门再进行分组,每个部门的person对象存放到各自的一个ArrayList中,再将产生的若干个List<Person>保存到List<List<Person>>,最后将生成的List<List<Person>>转换为Person[][],我的代码如下:
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; } }
1 楼
jsjtzq
2011-10-26
请问能不能将List<Person>对象转换成二维数组呢?该怎么转?
2 楼
宋建勇
2011-11-22
这个不行,List<Person>只是单个列表,只能转换成一维数组,因为它没有包含双列表,可参考一下方法,该方法和上面介绍的getArrayPerson2是一样的道理。
public static void listTest(){
ArrayList<Integer> l1 = new ArrayList<Integer>();
l1.add(1);
l1.add(2);
l1.add(3);
ArrayList<Integer> l2 = new ArrayList<Integer>();
l2.add(4);
l2.add(5);
l2.add(6);
ArrayList<ArrayList<Integer>> l = new ArrayList<ArrayList<Integer>>();
l.add(l1);
l.add(l2);
for(int i=0;i<l.size();i++){
System.out.println(l.toArray()[i]);
}
}
该方法的输出运行结果是:
[1, 2, 3]
[4, 5, 6]
public static void listTest(){
ArrayList<Integer> l1 = new ArrayList<Integer>();
l1.add(1);
l1.add(2);
l1.add(3);
ArrayList<Integer> l2 = new ArrayList<Integer>();
l2.add(4);
l2.add(5);
l2.add(6);
ArrayList<ArrayList<Integer>> l = new ArrayList<ArrayList<Integer>>();
l.add(l1);
l.add(l2);
for(int i=0;i<l.size();i++){
System.out.println(l.toArray()[i]);
}
}
该方法的输出运行结果是:
[1, 2, 3]
[4, 5, 6]