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; import java.util.Map; import java.util.TreeMap;public class Test { 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"); System.out.println(test(list)); } public static List<List<String>> test(List<String> input) { Map<String, List<String>> tmpMap = new TreeMap<String, List<String>>(); for (String key : input) { if (!tmpMap.containsKey(key)) { tmpMap.put(key, new ArrayList<String>()); } tmpMap.get(key).add(key); } return new ArrayList<List<String>>(tmpMap.values()); }}
Step1: create a map: the key is unduplicated value, the value is a list with duplicated value. Step2: fill in this map by iterating that list. Step3: iterating the map to generate a new list which will keep the same with your requirement.
若是用list遍历?要如何实现?
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); }}
2.遍历map,相同的value放置在一个list中
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.List;
import java.util.Map;
import java.util.TreeMap;public class Test {
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"); System.out.println(test(list));
} public static List<List<String>> test(List<String> input) {
Map<String, List<String>> tmpMap = new TreeMap<String, List<String>>();
for (String key : input) {
if (!tmpMap.containsKey(key)) {
tmpMap.put(key, new ArrayList<String>());
}
tmpMap.get(key).add(key);
}
return new ArrayList<List<String>>(tmpMap.values());
}}
Step2: fill in this map by iterating that list.
Step3: iterating the map to generate a new list which will keep the same with your requirement.
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);
}}