现在的位置: 首页 > 综合 > 正文

将分开的两个List合并成一个并保持其原来的顺序的两种方法

2013年06月20日 ⁄ 综合 ⁄ 共 2084字 ⁄ 字号 评论关闭

import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;

public class TestList
{
  static List list = new Vector();
  static Map map1 = new LinkedHashMap();
  static Map map2 = new Hashtable();
 
  static
  {   
   
//    list.add("00");
//    list.add("11");   
//    list.add("44");
//    list.add("66");
   
    list.add("22");
       
   
//    map1.put(new Integer(2), "22");
//    map1.put(new Integer(3), "33");
//    map1.put(new Integer(5), "55");
//    map1.put(new Integer(7), "77");
//    map1.put(new Integer(8), "88");
   
//  map2.put(new Integer(2), "22");
//  map2.put(new Integer(3), "33");
//  map2.put(new Integer(5), "55");
//  map2.put(new Integer(7), "77");
//  map2.put(new Integer(8), "88");
   
   
    map1.put(new Integer(0), "00");
    map1.put(new Integer(1), "11");
   
    map2.put(new Integer(0), "00");
    map2.put(new Integer(1), "11");
   
  }
 
 
  /**
   * @param args
   */
  public static void main(String[] args)
  {
    //testList1();
   
    testList2();
  }
 
 
 
  private static void testList1()
  {
   
    try
    {
      int size = list.size();
     
      List newList = new Vector();
     
      Iterator itr = map1.keySet().iterator();
      while(itr.hasNext())
      {
        Integer key= (Integer) itr.next();
        if(key.intValue()+1<=size)
        {
          list.add(key.intValue(), map1.get(key));
          size = list.size();
        }
        else
        {
          newList.add(map1.get(key));
        }
      }
     
      if(newList.size()!=0)
        list.addAll(newList);
     
      System.out.println("list.size():"+list.size());
     
      for(int i =0;i<list.size();i++)
      {
        System.out.println("  "+list.get(i));
      }
     
    }catch(Exception e)
    {
      e.printStackTrace();
    }
  }
 
  private static void testList2()
  {
    int size = map2.size()+list.size();
   
    List newList = new ArrayList(size);  
   
    int index = 0;
   
    for(int i=0; i< size ; i++)
    {
      Integer key = new Integer(i);
      if(map2.containsKey(key))      
        newList.add(map2.get(key));       
      else
        newList.add(list.get(index++));
    }     

   
    for(int i =0;i<newList.size();i++)
    {
      System.out.println("  "+newList.get(i));
    }
   
  }

}

抱歉!评论已关闭.