去掉list重复的数据,目前总结的以下三种方法,分别是采用set集合来做、两层循环不用任何方法来做,以及一层循环采用contains()方法来做,如下:

1.采用set结合来做:

package test;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.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);
}

}

2.采用双重循环来做:

package test;

import java.util.ArrayList;
import java.util.List;

public class Test2 {

//方法二:采用循环来做
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);

for (int i = 0; i < list.size()-1; i++) {//从第一个数开始,到最后一个数-1次循环
for (int j = list.size()-1; j >i;j--) {//从最后一个数开始到i+1
if(list.get(i)==list.get(j)){
list.remove(j);//这里的remove里的参数j就是角标,通过角标移除数据
}
}System.out.println(list);
}
System.out.println();
System.out.println(list);
}

}

3.采用contains()方法来做,一层循环即可解决问题:

package test;

import java.util.ArrayList;
import java.util.List;

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;
}
}

4.还是双重循环,也不用方法二来做

/**
* @author yanxu
*用双重循环去掉重复,不用任何方法,也不用那个:外层 循环从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;
}

如何去掉list里重复的数据的更多相关文章

  1. C#中去掉表中重复的数据

    /// <summary> /// 去掉表中重复的数据  int /// </summary> /// <param name="SourceTable&quo ...

  2. Excel: 使用Countif函数来去掉Excel中重复的数据

    如果使用Ruby脚本,uniq函数就能搞定一切.不过我们现在还是讨论怎么用excel的Countif函数吧. 假设Excel中有一列数据:

  3. mysql 用sql 语句去掉某个字段重复值数据的方法

    示例代码如下: create table tmp as select min(主键) as col1 from 去重表名 GROUP BY 去重字段; delete from 去重表名 where 主 ...

  4. mysql去重, 把url重复且区为空的中去掉、统计重复数据、、结果集去重合并成一行

    delete from 表名 where id not in (select d.id from (SELECT id FROM 表名 GROUP BY c1,c2,c3,c4)as d) #去重复, ...

  5. c# 如何中List<object>中去掉object对象中的重复列数据?

    //去掉重复 var title = modelList.GroupBy(m => m.Title.ToLower().Trim()).Select(m => new { ID = m.F ...

  6. mysql插入数据时,去掉重复的数据;

    1. 利用insert ignore into语句去重 mysql> INSERT IGNORE INTO person_tbl (last_name, first_name) -> VA ...

  7. EF里Guid类型数据的自增长、时间戳和复杂类型的用法

    通过前两章Lodging和Destination类的演示,大家肯定基本了解Code First是怎么玩的了,本章继续演示一些很实用的东西.文章的开头提示下:提供的demo为了后面演示效果,前面代码有些 ...

  8. J2EE判断重复的数据

    import java.util.ArrayList; import java.util.List; import org.junit.Test; /** * 判断重复的数据 * @author Ya ...

  9. mongodb去除重复的数据

    里边的内容在某些情况下不可行,可以参考下一篇. 今天出现了一个新的需求,有个部门需要拿到mongodb中的数据,要求去掉其中一个字段内容相同的数据. 虽然mongodb中有distinct来去重,但是 ...

随机推荐

  1. mysql主从复制过滤

    主从复制过滤: 配置文件中的[mysqld]块中: master:(考虑到即时点还原一般不在主过滤) binlog_do_db= #数据库白名单 binlog_ignore_db= #数据库白名单 s ...

  2. sbt assembly build.sbt content

    // import sbt._ // import sbt.Keys._ // import java.io.File // import AssemblyKeys._ name := "n ...

  3. 运行在VMware上的Linux虚拟机如何使用NAT模式连接物理机的外部网络

    在VMware Workstation中,默认有3个虚拟交换机,分别是VMnet0(使用桥接网络).VMnet1(仅主机网络)和VMnet8(NAT网络). 首先说一下为什么要用NAT模式,如果你的物 ...

  4. tomcat重启session不过期的处理

    tomcat关闭后重启,SESSION 仍然有效的处理方法很多时候明明在服务器上关闭了TOMCAT,但是客户端的表示 SESSION仍然在线,原因及解决方案如下: 每当正常关闭或者重启tomcat服务 ...

  5. BizTalk开发系列(十六) XML命名空间

    BizTalk开发过程中如果有对XML进行开发操作,比如在自定义代码里操作XML消息或者在Mapping的时候使用Xpath对XML进行操 作.则有机会遇到XML命名空间的问题.常见的是使用Xpath ...

  6. Python起步(2)

    单行注释:#多行注释:'''或""" 一条语句写在一行之内,不需要分号分隔两条语句在同一行,中间分号隔开缩进语句块中只有一条语句,可以直接写在“:”之后使用“\”进行续行 ...

  7. URAL 2080 莫队

    题意 有m种卡 给出卡的使用序列 要求每次从卡堆的顶部抽一张出来 刚好符合序列 输出初始 卡堆的排序 再输出每次抽出卡用后 卡插回卡堆的时候 这张卡上面有几张卡 初始排序很容易就可以搞出来 但是需要注 ...

  8. Population Mean

    Probability and Statistics > Moments > History and Terminology > Disciplinary Terminology & ...

  9. java 打开txt文件或者bat文件

    package open_exe; public class OpenExe { public static void openWinExe() { Runtime rn = Runtime.getR ...

  10. Android如何连接MySQL数据库

    Android开发中,大多数连接到远程MySQL数据库的方法是加入特定的Service到代码中.由于MySQL通常是和PHP一起使用的,最简单以及最常见的方法是写PHP脚本管理数据连接,以及从Andr ...