`

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

    博客分类:
  • Java
阅读更多
今天突然想到一个问题,即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;

	}
分享到:
评论
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]
1 楼 jsjtzq 2011-10-26  
请问能不能将List<Person>对象转换成二维数组呢?该怎么转?

相关推荐

    java实现二维数组转json的方法示例

    在Java编程中,将二维数组转换为JSON格式的数据是常见的数据处理需求,特别是在处理Web服务或数据交换时。本文将详细讲解如何使用Java实现这一功能,以及涉及的相关操作技巧。 首先,我们需要理解二维数组和JSON的...

    java 将一个二维数组存到txt,然后读取

    // 转换回二维数组 int[][] restoredMatrix = new int[matrixList.size()][]; for (int i = 0; i (); i++) { restoredMatrix[i] = new int[matrixList.get(i).size()]; for (int j = 0; j (i).size(); j++) { ...

    C#数组与Arraylist

    数组可以是一维、二维或多维的,用于存储同类型的元素。例如,你可以创建一个整型数组来存储一系列的整数: ```csharp int[] numbers = new int[5]; // 创建一个包含5个整数的数组 numbers[0] = 1; numbers[1] = 2;...

    12道不错的数组例题

    - Java支持二维数组,可以看作是一组一维数组的集合。例如,`int[][] matrix = new int[3][4]`创建了一个3行4列的矩阵。 4. **数组排序**: - 可以使用Java内置的`Arrays.sort()`方法对数组进行升序或降序排序。...

    Java基于二维数组实现的数独问题示例

    Java中声明二维数组的格式为:`int[][] array = new int[行数][列数];` 在本文中,我们使用二维数组来存储数独问题的矩阵数据。 二、Java中的数组遍历 数组遍历是指对数组中的每个元素进行遍历和访问的过程。在...

    将一个数组按照固定大小进行拆分成数组的方法

    因为Java中不能直接将`ArrayList`转换为多维数组,我们需要遍历`ArrayList`,将每个子`ArrayList`转换为整型数组并添加到结果数组中。 最后,`splitAry`方法返回这个`Object`数组,其中每个元素都是一个整型数组,...

    德塔数据结构变量快速转换 引擎系统 源码1.01

    - `arrayToMatrix(Object[] objects, int widthRange)` 方法将一维数组转换为二维数组(矩阵),宽度为`widthRange`,根据输入数组的长度自动调整高度。这种方法在处理表格数据或图像数据时非常有用。 - `...

    数组2007.4.9

    访问二维数组元素:`multiArray[0][1]`表示第一行第二列的元素。 五、遍历数组 1. for循环:`for (int i = 0; i ; i++) { System.out.println(myArray[i]); }` 2.增强for循环(foreach):`for (int element : ...

    第9章C#4.0数组和集合

    本章主要讨论了C# 4.0中的数组和集合的使用,包括一维数组、二维数组和多维数组,以及动态数组、队列、堆栈和哈希表等集合应用。 数组是C#中基本的数据结构之一,它是一系列相同类型的数据的集合,可以通过索引来...

    VB 数组的复制实例

    数组可以是一维的,也可以是多维的,如二维数组、三维数组等。数组的大小在声明时通常是固定的,但可以通过动态数组来改变大小。 二、数组的声明与初始化 在VB中,声明数组可以使用Dim语句,例如: ```vb Dim arr(0...

    java数组函数(摘自JAVA编程思想)

    Java还支持多维数组,如二维数组,可以理解为数组的数组: ```java int[][] matrix = new int[3][4]; ``` 6. **方法引用** Java 8引入了方法引用的概念,我们可以直接用ArrayUtil的函数名来调用其方法,如`...

    JAVA语言程序设计 第五章 数组

    访问二维数组元素的方式为: ```java int element = matrix[行索引][列索引]; ``` 六、数组作为方法参数 数组可以作为方法的参数传递,这允许在方法内部操作数组。例如: ```java public void printArray(int[] arr...

    数组进阶示例.rar

    2. **多维数组**:Java也支持多维数组,如二维数组,它可以看作是数组的数组,常用于表示矩阵或表格数据。`int[][] matrix = new int[3][4];` 这将创建一个3行4列的二维数组。 3. **遍历数组**:通过for循环可以...

    VB 数组的初始化实例

    例如,初始化一个2x2的二维数组: ```vb Dim multiArray(1 To 2, 1 To 2) As Integer multiArray(1, 1) = 1 multiArray(1, 2) = 2 multiArray(2, 1) = 3 multiArray(2, 2) = 4 ``` ### 实例应用 在实际编程中,...

    Java实现遍历一个数组

    数组分为一维数组、二维数组或多维数组。在这里,我们将主要讨论一维数组的遍历。 1. **声明和初始化数组** 在Java中,我们可以声明并初始化一个数组如下: ```java // 声明一个整型数组,长度为5 int[] ...

    Java 实例 - 数组转集合源代码-详细教程.zip

    例如,将二维数组转换为`List&lt;List&lt;Integer&gt;&gt;`: ```java int[][] multiDimArray = {{1, 2}, {3, 4}, {5, 6}}; List&lt;List&lt;Integer&gt;&gt; multiDimList = new ArrayList(); for (int[] subArray : multiDimArray) { ...

    dbutils-1.6

    - **BasicRowProcessor**:预设的ResultSetHandler实现,可以将结果集转换为基本的Java对象,如ArrayList或HashMap。 4. **连接池集成**: DBUtils支持与多种连接池(如C3P0、DBCP、HikariCP等)配合使用,可以...

    Java语言程序设计课件第四章 数组、字符串、向量和哈希表

    对于多维数组,Java支持二维和更高维度的数组,最常用的是二维数组,可以看作是表格形式的数据结构。多维数组在内存中的存储方式实际上是数组的数组,这意味着可以为每一维数组分配不同的长度。 字符串是Java中非常...

    hdoj解题笔记1

    - 初始化二维数组`map`,根据字符将地图转换为0和1。 - 使用DFS遍历地图,当找到一个油藏单元时,从当前位置开始进行DFS,标记所有相邻的油藏单元。 - 维护一个计数器`num`,记录不同油藏的数量。 - 在遍历完整...

    对象数组例题.zip

    例如,一个`Person`的二维数组可以表示多个人的列表,每个人有多个联系信息。 8. **对象数组与泛型**: Java的泛型可以应用于对象数组,提供类型安全,避免强制类型转换。例如,`Person[] people = new Person[5];`...

Global site tag (gtag.js) - Google Analytics