请问如下这道题该怎样排序:
在一个ArrayList中有{1,1,2,3,3,3}这些数据,怎样能通过遍历这个ArrayList然后把值等于1的放到一个LIST中,值等于2的放到另一个LIST中,值等于3的放到一个LIST中呢?
例如:list1{1,1};list2{2};list3{3,3,3}
在一个ArrayList中有{1,1,2,3,3,3}这些数据,怎样能通过遍历这个ArrayList然后把值等于1的放到一个LIST中,值等于2的放到另一个LIST中,值等于3的放到一个LIST中呢?
例如:list1{1,1};list2{2};list3{3,3,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));
}
}
还有更好的方案吗?
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());
}
}
}
可能我写的要求比较模糊,其实最好还是放到一个List中,这样我在前台中取数据就可以通过iterator遍历了,很方便。
只是这段代码稍显复杂
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 工具。不知道有没细节错。