日期:2014-05-20  浏览次数:20750 次

list元素合并的问题

List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("1");
list.add("2");
list.add("1");
list.add("4");
list.add("5");
相同的元素合并,想要的结果: [1,1,1],[2,2],[3],[4],[5](存到一个新list中)
小弟新手,不知道如何实现
------解决方案--------------------
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class Demo {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("1");
list.add("2");
list.add("1");
list.add("4");
list.add("5");

Map<String,List<String>> map = 
new HashMap<String, List<String>>();

for(String s : list){
List<String> value = map.get(s);
if(value == null){
List<String> temp = new ArrayList<String>();
temp.add(s);
map.put(s, temp);
}
else{
value.add(s);
}
}

System.out.println(map);
}
}

------解决方案--------------------
import java.util.ArrayList;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        List<String> input = new ArrayList<String>();
        input.add("1");
        input.add("2");
        input.add("3");
        input.add("1");
        input.add("2");
        input.add("1");
        input.add("4");
        input.add("5");

        List<List<String>> result = new ArrayList<List<String>>();
        for (String key : input) {
            boolean found = false;
            for (List<String> resultList : result) {
                if (resultList.get(0).equals(key)) {
                    resultList.add(key);
                    found = true;
                }
            }
            if (!found) {
                List<String> lst = new ArrayList<String>();
                lst.add(key);
                result.add(lst);
            }
        }

        System.out.println(result);
    }

}