`
nannan408
  • 浏览: 1756948 次
  • 性别: 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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics