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;
}

}


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;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值