`
nannan408
  • 浏览: 1788723 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java中map复杂数组转list(二维集合的遍历和merge排序)

 
阅读更多
1.前言。
  如题。有两种做法,做法2比做法1要好。
2.做法
(1)将数组变为Collection
  
  Map<byte[], List<Test>> results = null;//定义一个集合的集合
   Collection<List<Test>> collection = results.values();


(2)将集合转化为数组,这样每个数组就是一个集合了。
引用

Object[] list2 = collection.toArray();


  (3)遍历集合的集合
long total=0;//集合数据总数
for (int i = 0; i < list2.length; i++) {
			List<Test> object = (List<Test>) list2[i];
			total = total + object.size();
}


3.做法2。
  做法1中的步骤2其实可以优化,我们直接将list进行merge,再排序.例子如下:
(1)Test类
package com.ljn.entity;
public class Test {
	private long id;

	public Test(long id) {
		this.id = id;
	}

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

}



(2)自定义排序类,这个
package com.ljn.entity;

import java.util.Comparator;

/**
 * 对Step类进行排序
 * 
 * @author Administrator
 * 
 */
public class MyComparator implements Comparator<Test> {

	/**
	 * 如果o1小于o2,返回一个负数;如果o1大于o2,返回一个正数;如果他们相等,则返回0;
	 */
	@Override
	public int compare(Test t1, Test t2) {
		long id1 = t1.getId();
		long id2 = t2.getId();
		if (id1 > id2) {
			return 1;
		} else if (id1 == id2) {
			return 0;
		} else {
			return -1;
		}
	}
}


  (3)对List进行merge和排序,这样基本是最快了,如果还有更快的,请留言。

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import com.ljn.entity.MyComparator;
import com.ljn.entity.Test;

public class CollectionTest {
	public static void main(String[] args) {
		// Collection<List> collection=Collections.a;
		List List1 = new ArrayList();
		List List2 = new ArrayList();
		List1.add(new Test(1));
		List1.add(new Test(2));
		List1.add(new Test(3));
		List1.add(new Test(4));

		List2.add(new Test(5));
		List2.add(new Test(5));
		List2.add(new Test(6));
		List2.add(new Test(7));
		List2.add(new Test(8));

		Map<byte[], List<Test>> results = new HashMap();
		results.put("1".getBytes(), List1);
		results.put("2".getBytes(), List2);

		Collection<List<Test>> collection = results.values();

		List list = new ArrayList();
		Iterator it=results.entrySet().iterator();
		while(it.hasNext()){
			Map.Entry entry = (Map.Entry) it.next();
			List<Test> li=(List<Test>)entry.getValue();
			list.addAll(li);
		}
		//list.addAll(collection);
		for (int i = 0; i < list.size(); i++) {
             System.out.println(((Test)list.get(i)).getId());
		}
		Collections.sort(list, new MyComparator());
		for (int i = 0; i < list.size(); i++) {
            System.out.println(((Test)list.get(i)).getId());
		}

	}
}



 
0
0
分享到:
评论

相关推荐

    java数组排序

    在Java编程语言中,数组排序是一项基础且重要的任务。它涉及到不同的算法,这些算法通过比较和交换元素来达到数组元素的有序状态。本篇将详细探讨几种常见的排序算法及其在Java中的实现。 首先,让我们从最简单的...

    java一维数组课程作业

    在这个“java一维数组课程作业”中,我们看到一个名为`IntArrayUtils.java`的文件,它实现了一些基本的操作,如计算数组元素的总和、找到最大和最小值,以及对数组进行归并排序。下面我们将详细探讨这些知识点。 1....

    php实现给二维数组中所有一维数组添加值的方法

    这两种方法都能有效地在二维数组的所有一维子数组中添加值。然而,使用引用的方式(示例1)可能会引起意料之外的结果,特别是当数组在循环中被其他部分的代码修改时,因为引用会保留对原始数据的连接。相比之下,不...

    Merge(合并两个已排好序的数组)

    标题中的“Merge(合并两个已排好序的数组)”是一个经典的计算机科学问题,涉及到数据结构和算法的知识。在处理这个问题时,我们通常会用到数组和排序的基本概念。以下是关于这个主题的详细解释: **一、数组** 数组...

    PHP 如何把二维数组变为 一维数组.rar

    二维数组是由一个或多个一维数组组成的数组,而将二维数组转换为一维数组可以简化数据操作,提高代码效率。本教程将详细讲解如何在PHP中实现这个转换。 首先,我们需要了解二维数组的基本结构。二维数组通常用于...

    matlab开发-多维数组的合并排序

    本主题将深入探讨如何使用合并排序(Merge Sort)这一高效稳定的排序算法来对MATLAB中的多维数组进行排序。合并排序是一种分治策略,其基本思想是将大问题分解成小问题来解决,然后将小问题的解合并成原问题的解。 ...

    php多维数组转化为一维数组并重组源码

    这个例子中,`$array` 是一个包含三个元素的数组,其中第二个元素自身又是一个数组,即嵌套的多维数组。 现在,我们将讨论如何将这样的多维数组转换为一维数组。有多种方法可以实现,但这里我们将介绍一种递归的...

    PHP程序设计-3期(KC016) 3.1.1二维数组拓展知识.doc

    遍历二维数组通常需要用到嵌套循环,外层循环用于遍历每一行(即每一个一维数组),内层循环用于遍历每一行中的各个元素。以下是如何遍历上述二维数组并输出信息的示例: ```php foreach ($people as $person) { ...

    两个数组合并排序

    在IT领域,数组操作是编程中的基础且关键的一部分,尤其涉及到数据处理与算法优化时更是如此。本文将围绕“两个数组合并排序”这一主题展开,深入解析如何有效地将两个数组进行合并并按照一定顺序进行排序。 ### ...

    将两数组合并成一个数组并排序

    在这个场景中,我们要讨论如何在C语言中将两个已排序的数组合并成一个新的排序数组。 首先,让我们了解数组的基本概念。数组是由相同类型元素构成的集合,可以通过索引来访问每个元素。在C语言中,数组的声明通常...

    Java 实例 - 数组排序及元素查找源代码-详细教程.zip

    在Java编程语言中,数组是基础且重要的数据结构,用于存储一组同类型的元素。本教程主要涵盖两个核心主题:数组的排序和元素查找。通过学习这些概念,开发者能够有效地管理和操作数组,提升程序的效率。 一、数组...

    php打乱数组二维数组多维数组的简单实例

    - 维数:在多维数组中,维数表示数组的层次,一维数组是一行,二维数组是表,三维数组则可以理解为立方体等。 在实际开发中,理解并熟练运用这些数组操作技巧对于处理复杂的数据结构至关重要。例如,处理用户提交的...

    PHP将二维数组某一个字段相同的数组合并起来的方法

    在PHP编程中,处理二维数组是一项常见的任务,尤其是在数据处理和数据分析时。本文将深入探讨如何根据二维数组中某一特定字段的值来合并数组元素,从而实现数据的整合。我们将以给定的例子作为出发点,讲解如何将...

    Merge Sorted Array合并排序数组leetcode

    Merge Sorted Array 合并 排序 数组 leetcode

    MergeList_Sq.zip_MergeList Sq_MergeList_Sq

    标题“MergeList_Sq.zip_MergeList Sq_MergeList_Sq”暗示了我们正在处理一个与线性表合并相关的项目,可能是一个程序或代码库,其中包含了名为“MergeList_Sq”的压缩文件,该文件包含了一个名为“MergeList_Sq.cpp...

    两个集合比较(新增、编辑、删除)

    本文将深入探讨如何比较两个集合,并关注在Java中使用List进行对比时的“新增”、“编辑”和“删除”操作。首先,我们需要理解集合的基本概念。集合是存储一组元素的数据结构,而List是一种有序的集合,允许重复元素...

    PHP数组详解.pdf

    数组可以存储不同类型的值,并支持一维和多维数组。定义数组的方法有: 1. 直接赋值声明,如 `$arr = ['value1', 'value2'];` 2. 使用`array()`语言结构,如 `$arr = array('key1' =&gt; 'value1', 'key2' =&gt; 'value2')...

    js代码-合并二维有序数组成一维有序数组

    在JavaScript编程中,有序数组是数据处理中常见的一种数据结构,尤其在算法和数据结构的实践中,合并二维有序数组成一维有序数组是一项基础且重要的任务。这有助于优化存储空间和提高查找效率。本篇文章将深入探讨这...

    Excel-VBA宏编程实例源代码-使用Merge排序阵列.zip

    VBA支持一维数组、二维数组甚至多维数组,可以用于存储表格数据或其他类型的数据集。 四、Merge排序算法 Merge排序是一种高效的排序算法,基于分治策略。它将大数组分解为小数组,分别进行排序,然后将已排序的小数...

    PHP代码,需要数组1为1到36中随机选取5个数,需要数组2为1到12随机2个数,然后组合两个数组,然后输出数组1为红色,数组2

    然后,我们使用array_merge函数将这两个数组组合成一个新的数组,并使用foreach循环遍历数组,将数组1中的元素设置为红色,数组2中的元素设置为蓝色,并输出结果。 需要注意的是,我们使用了in_array函数来判断一个...

Global site tag (gtag.js) - Google Analytics