去掉list重复的数据,目前总结的以下三种方法,分别是采用set集合来做、两层循环不用任何方法来做,以及一层循环采用contains()方法来做,如下:
我在这里用Integer类型的list进行展示
方法1:
1./** * @author 程龙 *用双重循环去掉重复,不用任何方法,也不用那个:外层 循环从0到长度-1,后面那个相反的那个 */ public static List<Integer> getDistinctList(List<Integer> list){ List<Integer> newList = new ArrayList<Integer>(); for (int i = 0; i < list.size(); i++) { //标识,方便下面使用 boolean flag = false; //只要新的list里包含循环到的值,就说明重复了。 for(int j = 0; j<newList.size(); j++){ if(list.get(i) == newList.get(j)){ flag = true; //找到一次就可以退出了 ,不需要再进行额外的次数;而且这里也不会再出现第二次 。 break; } } if(!flag){ newList.add(list.get(i));} } return newList; }
方法2:
.采用contains()方法来做,一层循环即可解决问题:
public class Test3 { public static void main(String[] args) { //测试方法 List<Integer> list=new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(3); list.add(2); list.add(1); list.add(1); list.add(4); list.add(4); System.out.println(list); List<Integer> newList = getNewList(list); System.out.println(newList); } /** * * 采用contains()方法 * @param list * @return list * 说明:我需要一个不重复的list,那么我循环你给我的带重复数据的list,只有满足我新的list里不包含重复list里的值的时候,我再把获取的原list的值放的我新的list里, * 也就是如果我的新的list有了值,那么我就不向像新的里面添加值了。 */ public static List<Integer> getNewList(List<Integer> list){ List<Integer> myList=new ArrayList<Integer>(); for (int i = 0; i < list.size(); i++) { if(!myList.contains(list.get(i))){ myList.add(list.get(i));; } } return myList; } }
方法3:
采用set结合来做:
public class Test1 { //采用set来做,因为set是不重复的 public static void main(String[] args) { List<Integer> list=new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(3); list.add(2); list.add(1); System.out.println(list); //上面的list里装的有重复的数据,我要用set来去掉重复 Set<Integer> set=new HashSet<Integer>(list); System.out.println(set);//这里的set里的值已经是去掉了重复的了,如果我还想要将原有的list去重复,如下: System.out.println(list); list.clear();//将原来的list的数据全部清空 System.out.println(list); list.addAll(set);//将set集合的值放入到list里,因为set里是没有重复的了,这个时候list也就没有重复的了 System.out.println(list); } }
以上就是我提供的三种方法,大家有什么意见或者补充可以在评论区写上。