请问如下这道题该怎样排序:
在一个ArrayList中有{1,1,2,3,3,3}这些数据,怎样能通过遍历这个ArrayList然后把值等于1的放到一个LIST中,值等于2的放到另一个LIST中,值等于3的放到一个LIST中呢?
例如:list1{1,1};list2{2};list3{3,3,3}

解决方案 »

  1.   

    Map. 遍历整个list的时候用值作为ID查找map中是否已经存在相应的list,如果存在,则在对应的list中插入数据,如果不存在则向map中插入新的LIST.
      

  2.   

    遍历list,取出第一个元素,比如是1吧,将1加到list1中,同时比较第2个元素和第一个是否相等,如果相等,则直接加到list1中,如果不等的话,创建一个新的List对象,对象名就叫list{元素},然后一直遍历下去吧...
      

  3.   


    package Test;
    import java.util.*;
    public class qdb1
    {
    private static List<List<Integer>> main_list=new ArrayList<List<Integer>>();
    public static  List<List<Integer>> fill(List<Integer> list)
    {
    if(list==null||list.size()==0)
    {
    return main_list;
    }
    outer:
    for(int i=0;i<list.size();i++)
    {
    int num=list.get(i);
    for(int j=0;j<main_list.size();j++)
    {
    List<Integer> select_list=main_list.get(j);
    if(select_list!=null&&num==select_list.get(0))
    {
    select_list.add(num);
    continue outer;
    }
    }
    List<Integer> body_list=new ArrayList<Integer>();
    body_list.add(num);
    main_list.add(body_list);
    }
    return main_list;
    }
    public static void main(String[] args)
    {
    Integer[] i={1,1,2,3,3,3};
    List<Integer> list=new ArrayList<Integer>(Arrays.asList(i));
    System.out.println(fill(list));
    }
    }
      

  4.   

    谢谢qiandongbo,可以正确执行。
    还有更好的方案吗?
      

  5.   

    汗,又看错要求了。还以为必须放到另一个list呢,MAP吧,请无视6楼的代码
      

  6.   

    汗,又看错要求了。还以为必须放到另一个list呢,MAP吧,请无视6楼的代码
      

  7.   

    import java.util.*;
    import java.util.Map.Entry;class Knowing{
    Map<Integer,List<Integer>> map;
    public static void main(String[] args){
    List list =new ArrayList();
    list.add(1);
    list.add(1);
    list.add(2);
    list.add(3);
    list.add(3);
    list.add(3);
    Knowing k = new Knowing();
    k.go(list);
    k.print();
    }
    public void go(List<Integer> list){
    map = new HashMap<Integer,List<Integer>>();
    for(int i=0;i<list.size();i++){
    int j = list.get(i);
    List temp = map.get(j);
    if(temp==null){
    temp=new ArrayList<Integer>();
    map.put(j, temp);
    }
    temp.add(j);
    }
    }
    public void print(){
    Set set = map.entrySet();
    Iterator iterator = set.iterator();
    while(iterator.hasNext()){
    Entry entry = (Entry)iterator.next();
    List list = (List)entry.getValue();
    System.out.println(list.toString());
    }
    }
    }
      

  8.   

    to:qiandongbo
    可能我写的要求比较模糊,其实最好还是放到一个List中,这样我在前台中取数据就可以通过iterator遍历了,很方便。
    只是这段代码稍显复杂
      

  9.   

    伪代码 ......List one = new ArrayList();
    List two = new ArrayList();
    List three = new ArrayList();List list = new ArrayList();
    list.add(1);
     ...
    list.add(2);
     ...
    list.add(3);
     ...
    Iterator it = list.iterator();
    while(it.hasNext()){
     int i = Integer.parseInt(String.valueOf(it.next()));
     if(i == 1){
      one.add(i);
     }
     if(i == 2){
      two.add(i);
     }
     if(i == 1){
      three.add(3);
     }
    }--------------------我没用IDE 工具。不知道有没细节错。
      

  10.   

    list{1,1,2,3,3,3}不是固定的,所以事先固定创建3个list。