首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

ArrayList的分组及变换为二维数组

2012-11-07 
ArrayList的分组及转换为二维数组今天突然想到一个问题,即ArrayList的分组问题,person对象保存在ArrayList

ArrayList的分组及转换为二维数组
今天突然想到一个问题,即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]

热点排行