java将list相同次数输出到另外一个list,可以使用map作为中间转换的结合,将重复的次数赋值给value,而key值为list原来的内容,实例如下:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
public static void main(String[] args) {
Listlist = new ArrayList ();//新建一个集合
list.add(1);
list.add(2);
list.add(2);
list.add(5);
list.add(4);
list.add(4);
list.add(3);
list.add(2);
Mapmap = new HashMap ();//新建一个map集合,用来保存重复的次数
for(Integer obj: list){
if(map.containsKey(obj)){//判断是否已经有该数值,如有,则将次数加1
map.put(obj, map.get(obj).intValue() + 1);
}else{
map.put(obj, 1);
}
}
ArrayListnewList = new ArrayList (map.values());//新建另外一个list
System.out.println(newList.toString());
}
}
利用 indexOf功能,检索到不同index的,就同时删除两个、添加到另一个List中。
——如果考虑出现更多次数的,就直到indexOf=-1,再删除自己。
旧list:list1 新list:list2
取list1的第一个值,放进list2中,循环list1,比较是否和list1的第一个值相同,如果相同删除.然后取list1的第一个值,放进list2中,循环list1,比较是否和list1的第一个值相同,如果相同删除,以此就可以了,代码自己实现吧,都给你写出来就没意思了
你这个是数组吧
{1,2,2,5,4,4,3,2}
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
public static void main(String[] args) {
List
list.add(1);
list.add(2);
list.add(2);
list.add(5);
list.add(4);
list.add(4);
list.add(3);
list.add(2);
Map
for(Integer obj: list){
if(map.containsKey(obj)){
map.put(obj, map.get(obj).intValue() + 1);
}else{
map.put(obj, 1);
}
}
ArrayList
System.out.println(newList.toString());
}
}
--------测试
[1, 2, 1, 3, 1]