精华内容
下载资源
问答
  • ArrayList去除重复元素

    千次阅读 多人点赞 2021-03-30 19:35:07
    Java中ArrayList去除重复元素(包括字符串和自定义对象) 文章目录Java中ArrayList去除重复元素(包括字符串和自定义对象)1、去除重复字符串2、去除ArrayList中重复自定义对象元素Person实体类: 1、去除重复...

    Java中ArrayList去除重复元素(包括字符串和自定义对象)



    1、去除重复字符串

    package com.online.msym;
    import java.util.ArrayList;
    import java.util.Iterator;
    @SuppressWarnings({ "rawtypes", "unchecked" })
    public class Demo1_ArrayList {  
      public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("a1");
        list.add("a2");
        list.add("a1");
        list.add("b2");
        list.add("c1");
        list.add("c1");
        list.add("c3");
        list.add("c1");
         //调用方法去除重复
        ArrayList newList = getSingle(list);
        System.out.println(newList);
      }
      /*
       * 创建新集合将重复元素去掉
       * 1,明确返回值类型,返回ArrayList
       * 2,明确参数列表ArrayList
       * 
       * 分析:
       * 1,创建新集合
       * 2,根据传入的集合(老集合)获取迭代器
       * 3,遍历老集合
       * 4,通过新集合判断是否包含老集合中的元素,如果包含就不添加,如果不包含就添加
       */
       
      public static ArrayList getSingle(ArrayList list) { 
       //1,创建新集合
        ArrayList tempList = new ArrayList();
          
       //2,根据传入的集合(老集合)获取迭代器     
        Iterator it = list.iterator();
          
         //3,遍历老集合           
        while(it.hasNext()) { 
        
        //记录住每一个元素                
          Object obj = it.next(); 
           
           //如果新集合中不包含老集合中的元素              
          if(!tempList.contains(obj)) {
            
           //将该元素添加         
            tempList.add(obj);               
          }
        }  
        return tempList;
      }
    }
    

    2、去除ArrayList中重复自定义对象元素

    注意事项:必须重写equals()方法的,因为contains方法和remove方法底层都依赖于equals方法
    代码如下(示例):

    package com.online.msym;
    import java.util.ArrayList;
    import java.util.Iterator;
    import online.msym.bean.Person;
    @SuppressWarnings({ "rawtypes", "unchecked" })
    public class Demo2_ArrayList {
      /**
       * * 需求:ArrayList去除集合中自定义对象元素的重复值(对象的成员变量值相同,即同姓名同年龄)
      **/
      public static void main(String[] args) {
    
        //创建集合对象
        ArrayList list = new ArrayList();        
         list.add(new Person("张三", 18));
        list.add(new Person("张三", 18));
        list.add(new Person("小明", 12));
        list.add(new Person("小明", 12));
        list.add(new Person("小明", 12));
        list.add(new Person("小明", 12));
       
        list.remove(new Person("张三", 18));
        System.out.println(list);
      }
      /*
       * 创建新集合将重复元素去掉
       * 1,明确返回值类型,返回ArrayList
       * 2,明确参数列表ArrayList
       * 
       * 分析:
       * 1,创建新集合
       * 2,根据传入的集合(老集合)获取迭代器
       * 3,遍历老集合
       * 4,通过新集合判断是否包含老集合中的元素,如果包含就不添加,如果不包含就添加
       */
    
      public static ArrayList getSingle(ArrayList list) { 
        //1,创建新集合
        ArrayList tempList = new ArrayList<>();  
         
        //2,根据传入的集合(老集合)获取迭代器     
        Iterator it = list.iterator(); 
         
        //3,遍历老集合            
        while(it.hasNext()) {    
    
          //记录住每一个元素        
          Object obj = it.next(); 
    
            //如果新集合中不包含老集合中的元素        
          if(!tempList.contains(obj)) {  
          
           //将该元素添加         
            tempList.add(obj);               
          }
        }
        return tempList;
      }
    }
    

    Person实体类:

    package online.msym.bean;
    public class Person {
      private String name;
      private int age;
      public Person() {
        super();
      }
      public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
      }
      public String getName() {
        return name;
      }
      public void setName(String name) {
        this.name = name;
      }
      public int getAge() {
        return age;
      }
      public void setAge(int age) {
        this.age = age;
      }
      @Override
      public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
      }
      //重写equals方法,用于判断连个Person对象是否相同
      @Override
      public boolean equals(Object obj) {
        Person p = (Person)obj;
        System.out.println("equals 方法被调用了,证明contains方法底层调用的是equals");
        return this.name.equals(p.name) && this.age == p.age;
      }
    }
    
    展开全文
  • mysql 查找重复及去除重复

    千次阅读 2018-05-22 13:31:39
    1、查找重复 测试用表 +—-+——–+——+———+———+————+ | id | firmid | name | balance | holdsum | exchangeid | +—-+——–+——+———+———+————+ | 1 | 10001 | aa | 100.10 | 100 | 2 ...

    1、查找重复

    测试用表
    +—-+——–+——+———+———+————+
    | id | firmid | name | balance | holdsum | exchangeid |
    +—-+——–+——+———+———+————+
    | 1 | 10001 | aa | 100.10 | 100 | 2 |
    | 2 | 10001 | aa | 899.20 | 100 | 2 |
    | 3 | 10002 | bb | 98.20 | 100 | 2 |
    | 4 | 10002 | bb | 11.20 | 100 | 1 |
    | 5 | 10001 | aa | 899.20 | 100 | 4 |
    | 6 | 10003 | cc | 1101.20 | 100 | 1 |
    +—-+——–+——+———+———+————+
    表中有多个字段重复,先以firmid为例,查找重复的数据。

    SELECT
        firmid,
        count(*)
    FROM
        `01test`
    GROUP BY
        firmid
    HAVING
        count(firmid) > 1;

    结果:
    +——–+———-+
    | firmid | count(*) |
    +——–+———-+
    | 10001 | 3 |
    | 10002 | 2 |
    +——–+———-+
    多列同时重复,group by 多个字段,如:

    SELECT
    firmid,exchangeid,count(firmid)
    FROM
        `01test`
    GROUP BY
        firmid,exchangeid
    having count(firmid)>1

    结果
    +——–+————+—————+
    | firmid | exchangeid | count(firmid) |
    +——–+————+—————+
    | 10001 | 2 | 2 |
    +——–+————+—————+

    由于group 特性 (group用法)查询出来的数据是所有重复数据的合并,如果需要删除,则需要指定条件,以保留一行数据。

    2、去除重复

    例1:删除测试表中firmid重复的行,保留ID最小的行

    • 查询出需要删除重复的数据
     select * from 02test where firmid in
    (SELECT
    firmid
    FROM
        `02test`
    GROUP BY
        firmid
    having count(firmid)>1)
    and id not in (SELECT
    min(id)
    FROM
        `02test`
    GROUP BY
        firmid
    having count(firmid)>1)

    查出来的数据就是我们需要删除的数据,结果如下:
    +—-+——–+——+———+———+————+
    | id | firmid | name | balance | holdsum | exchangeid |
    +—-+——–+——+———+———+————+
    | 2 | 10001 | aa | 899.20 | 100 | 2 |
    | 4 | 10002 | bb | 11.20 | 100 | 1 |
    | 5 | 10001 | aa | 899.20 | 100 | 4 |
    +—-+——–+——+———+———+————+

    • 去除需要删除的数据
      我们根据上面查询出来主键ID对表进行删除操作
    delete from 02test where id in (
    select id from 02test where firmid in
    (SELECT
    firmid
    FROM
        `02test`
    GROUP BY
        firmid
    having count(firmid)>1)
    and id not in (SELECT
    min(id)
    FROM
        `02test`
    GROUP BY
        firmid
    having count(firmid)>1)
    )

    然而出现报错

    ERROR 1093 (HY000): You can't specify target table '02test' for update in FROM clause

    这条提示表示在MySql里你不能先查询了然后再删除,这个就只能等官方升级支持这个新特性了,但我们用临时表来解决,修改成一下语句:

    delete from 02test where id in (select id from (
    select id from 02test where firmid in
    (SELECT
    firmid
    FROM
        `02test`
    GROUP BY
        firmid
    having count(firmid)>1)
    and id not in (SELECT
    min(id)
    FROM
        `02test`
    GROUP BY
        firmid
    having count(firmid)>1)
    ) as temp )
    

    执行成功,再查查表。
    +—-+——–+——+———+———+————+
    | id | firmid | name | balance | holdsum | exchangeid |
    +—-+——–+——+———+———+————+
    | 1 | 10001 | aa | 100.10 | 100 | 2 |
    | 3 | 10002 | bb | 98.20 | 100 | 2 |
    | 6 | 10003 | cc | 1101.20 | 100 | 1 |
    +—-+——–+——+———+———+————+

    例2:删除测试表中firmid和exchangid 都相同的行,保留balance 最大的一条(多个重复条件)。
    先查询出重复的数据

    select * from 03test where (firmid,exchangeid) in (
    SELECT
        firmid,exchangeid
    FROM
        03test
    GROUP BY
        firmid,
        exchangeid
    HAVING
        count(firmid) > 1)

    +—-+——–+——+———+———+————+
    | id | firmid | name | balance | holdsum | exchangeid |
    +—-+——–+——+———+———+————+
    | 1 | 10001 | aa | 100.10 | 100 | 2 |
    | 2 | 10001 | aa | 899.20 | 100 | 2 |
    +—-+——–+——+———+———+————+

    查询需要删除的数据:

    select * from 03test where (firmid,exchangeid) in (
    SELECT
        firmid,exchangeid
    FROM
        03test
    GROUP BY
        firmid,
        exchangeid
    HAVING
        count(firmid) > 1)
    and id not in 
    
    (
    select id from 03test where (firmid,exchangeid,balance)in(
    SELECT
        firmid,exchangeid,max(balance)
    FROM
        03test
    GROUP BY
        firmid,
        exchangeid
    HAVING
        count(firmid) > 1)
    )

    +—-+——–+——+———+———+————+
    | id | firmid | name | balance | holdsum | exchangeid |
    +—-+——–+——+———+———+————+
    | 1 | 10001 | aa | 100.10 | 100 | 2 |
    +—-+——–+——+———+———+————+

    删除数据:

    delete from 03test where id in (select id from (
    (select id from 03test where (firmid,exchangeid) in (
    SELECT
        firmid,exchangeid
    FROM
        03test
    GROUP BY
        firmid,
        exchangeid
    HAVING
        count(firmid) > 1)
    and id not in 
    (
    select id from 03test where (firmid,exchangeid,balance)in(
    SELECT
        firmid,exchangeid,max(balance)
    FROM
        03test
    GROUP BY
        firmid,
        exchangeid
    HAVING
        count(firmid) > 1)
    ))) as temp)
    展开全文
  • txt文件去除重复的文本

    热门讨论 2011-09-22 16:26:09
    假如一个.txt文件里有几万个手机号码,而这些手机号码中有一些是重复的,我们想删除重复的号码,只留下其中一个,那么这个软件就能帮到你!
  • var data = (from u in _stone_storageService.LoadSearchData(roleQuery).AsEnumerable() select new { ... 以S_Number字段去除重复值,其余字段可以有重复值。 求大神指教!!!
  • SQL查询去除重复

    万次阅读 2019-05-21 18:17:03
    可能会碰到以下几种重复情况: 1.存在部分字段相同的纪录,即有唯一键主键ID(最常见情况) 如果是这种情况的话用distinct是过滤不了的,这就要用到主键id的唯一性特点及group by分组(通过重复字段分组,只取重复行...
    可能会碰到以下几种重复情况:

    1.存在部分字段相同的纪录,即有唯一键主键ID(最常见情况)
    如果是这种情况的话用distinct是过滤不了的,这就要用到主键id的唯一性特点及group by分组(通过重复字段分组,只取重复行中的一个id达到不重复)

    select * from table where id in (select max(id) from table group by 重复的字段名1,重复字段名2)
    

    2、存在两条完全相同的记录(最简单情况)

    这是最简单的一种情况,用关键字distinct就可以去掉

    select distinct id(某一列) from table(表名) where (条件)
    

    3.没有唯一键ID

    这种情况没有唯一id,我们可以通过自己添加一列唯一id。然后按照第一种实现

    select row_number() over() as id,* from table where id in (select max(id) from (select row_number() over() as id,* from table) group by 重复的字段名1,重复字段名2)
    

    也可以用临时表

    select identity(int1,1) as id,* into newtable(临时表) from table(原表)
    select * from newtable where id in (select max(id) from newtable group by [去除重复的字段名列表,....])
    drop table newtable
    
    展开全文
  • postgresql去除重复

    千次阅读 2019-01-08 18:44:40
    建表并插入数据 create table test(id int, name varchar); insert into test values(1,'a'),(1,'a'),(2,'b'); 查询 select * from test; ...去除重复行 delete from test where ctid not ...

    建表并插入数据

    create table test(id int, name varchar);
    insert into test values(1,'a'),(1,'a'),(2,'b');
    
    • 查询
    select * from test;
    

    结果:
    在这里插入图片描述

    select ctid,* from test;
    

    结果:
    在这里插入图片描述

    • 去除重复行
    delete from test where ctid not in (select min(ctid) from test group by id);
    
    • 验证
    select ctid,* from test;
    

    在这里插入图片描述

    展开全文
  • 数组去重复的方法

    千次阅读 2019-08-09 21:04:44
    可以直接复制数组,既然这样,我就没必要纠结新数组的长度了,直接声明一个跟原数组长度一样的临时数组,只要记录下去重后的元素个数,然后就可以确定去重后数组长度再将临时数组拷贝到新数组就行了 public ...
  • 数据库去除重复记录

    万次阅读 2018-05-29 17:37:34
    最近遇到一个面试题,所以跟大家分享下: 如何删除数据库中重复的记录 一般情况下,数据库去重复有以下那么三种方法: 第一种: 两条记录或者多条记录的每一个字段值完全相同,这种情况去重复最简单,用关键字...
  • oracle 去除重复sql

    千次阅读 2019-03-28 17:51:41
    1.将相同日期内的相同名字的多条记录只保存一条记录 select t.*, row_number() over(partition by t.time_stamp, t.ne_name order by t.time_stamp) rn from user t
  • 下拉框去除重复

    千次阅读 2019-06-07 16:20:53
    下拉框去除重复 文献种类:专题技术文献; 开发工具与关键技术:Vs 作者:蛋蛋; 撰写时间:2019/06/07 什么是下拉框? 查询页面有下拉框选中条件作为查询,查询的结果作为条件; 下拉框是用作与选择的;但是在一些...
  • kettle实验七:去除重复的数据

    千次阅读 2021-01-25 09:04:25
    1.熟练掌握“去除重复记录”,“排序记录”,“文本文件输入”等组件的使用,实现去除重复数据。 2.熟练掌握“去除重复记录”,“排序记录”,“文本文件输入”等组件的使用,实现去除重复数据。 【实验原理】 通过...
  • pandas如何去除重复

    万次阅读 2020-02-17 10:16:06
    pandas如何去除重复值 在我们做数据分析时,我们所要处理的数据中难免会出现重复的数据,有些是我们需要的,有些是我们不需要的,甚至还会影响我们接下来数据分析的准确度。接下来,给大家介绍去除重复值的方法。 ...
  • vue中数组去重复数据

    千次阅读 2020-06-30 14:26:28
    数组数据调用unique方法去除重复数据。 let newarr= this.unique(arr); unique(newarr) { const res = new Map(); return arr.filter((arr) => !res.has(arr.id) && res.set(arr.id, 1)); }
  • 【用set集合去重复数据,重写equals还是不成功的问题解决思路在文章最后】 需求描述: 因业务需要,通过复杂的代码逻辑从数据库取出数据放入List集合中,涉及多次从访问数据库取出数据放入List集合中,其中会取到...
  • R语言数据按行去除重复

    千次阅读 2020-12-23 11:29:09
    数据重复的影响 在临床上,偶尔会出现需要分析病例数据的情况。通常为了保护隐私,患者的个人识别相关的关键信息会被剔除只保留病历号,但是患者的就诊行为可能不止一次,这也就导致了我们的数据出现了重复,把这些...
  • linux shell 文件去除重复

    千次阅读 2020-10-13 09:31:49
    去除重复后 sort -u test fffff jason 注意顺序被打乱 方法二:sort test|uniq 去除重复后 $sort test |uniq fffff jason 注意顺序被打乱,原理和方法一雷同 方法三:awk '!a[$0]++' 去除重复后 $ awk ...
  • List集合去除重复对象

    千次阅读 2019-03-21 21:28:51
    在java中,要将一个List中重复的对象除去,如果这个集合中的数据类型是基本数据类型,可以直接将List集合转换成Set,就会自动去除重复的元素,大家都知道Set集合的特点就是没有重复的,这个就相对比较简单,这里不在...
  • Arraylist去除重复元素

    千次阅读 2019-05-20 20:57:28
    由于list集合的特点,有序,有索引(也就是有下标),元素可以重复,所以Arraylist是元素也是可以重复的。但是我们用总是要用到去除重复元素这个点,简单介绍一下方法。 Arraylist去除重复元素 原理:利用ArrayList的...
  • Js 数组去除重复数据算法

    千次阅读 2018-09-24 13:13:58
    在JS中经常会遇到去除数组中重复数据的需求,在此介绍四种算法以实现JS数组去重的功能. 1.速度最快算法:对象键值对法 &nbsp;&nbsp;&nbsp;&nbsp;实现思路: &nbsp;&nbsp;&nbsp;&nbsp;...
  • python字符串去重复

    千次阅读 2019-09-16 10:13:14
    python字符串去重复 先将第一个字符串加入另一个空字符串“temp”;然后从第二个字符串开始与temp中已经加入的字符串对比,若已经存在则不加入temp字符串,若无加入字符串。使用python实现 str2="盖伦诺手盖伦派克...
  • 数据库去除重复数据

    千次阅读 2019-02-15 14:35:36
    背景:去除数据库中字段重复的数据 表t_bmk 包含三个字段 id,ksno,fenzu_code;现在去除t_bmk中ksno和fenzu_code两个字段重复的数据,步骤如下: 方法一: 1、根据重复字段用group by函数进行分组,查出所有重复的...
  • shell脚本--awk数组实现去除重复

    千次阅读 2019-11-18 14:50:07
    去除重复行的方法有很多,这里介绍三种。 测试文本: [root@172-0-10-222 myscripts]# cat testfile andy 123456 hanna 123456 hello world welcome fuck andy 123456 hello world andy andy 这其中,有andy ...
  • Java实现 LeetCode 316 去除重复字母

    万次阅读 多人点赞 2020-03-06 15:53:08
    316. 去除重复字母 给定一个仅包含小写字母的字符串,去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 示例 1: 输入: “bcabc” 输出: “abc” ...
  • 文本去重复工具文本去重复工具文本去重复工具文本去重复工具文本去重复工具文本去重复工具
  • 集合去重复及取重复及stream的使用

    千次阅读 2020-03-16 20:33:43
    stream适合统计和查询,遍历把每个元素的数量放到map里, 然后map去除数量大于1的 public class test69 { public static void main... //取出重复的数据 List<Integer> list = new ArrayList<>(); ...
  • sql 显示重复数据 去重复 distinct

    千次阅读 2019-07-12 13:01:57
    === sql 显示重复数据 select id from A where id in (select id from A group by id having count(1) >=2) ...select id,count(1) 重复次数 from A group by...查询出来的结果都是id重复的,重复次数 中的数值...
  • React es6 数组对象去除重复

    千次阅读 2019-12-17 15:44:02
    //去除重复数组对象某个重复值 export const removesDuplicates=(array,duplicatesValue)=> { return array = dedupe(array, duplicatesValue => duplicatesValue.value) }; 去除value只需要 list=...
  • sql去除重复语句

    千次阅读 2017-11-14 15:00:00
    sql 单表/多表查询去除重复记录 单表distinct 多表group by group by 必须放在 order by 和 limit之前,不然会报错 ************************************************************************************ 1、查找...
  • pandas去除重复

    万次阅读 2018-06-13 11:17:37
    ③ 将S与最上的data表进行merge,我们不想要看到重复的id列,甚至我们也可以将问题延伸为S与data表不止是id列的重复,还有好多条其他的列的重复,那么如何保证将它们merge之后没有重复列呢? 解决方案 第一...
  • Mysql去除重复数据

    万次阅读 2018-09-17 17:12:10
    最近工作业务上遇到需要去除重复数据,所以了解了一下如何去除某属性相同的数据! 1:查询出重复数据 以用户表user为例,我们需要去除login_name重复的数据,那么我们首先需要查询一下哪些数据是重复的。 sql如下...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,328,499
精华内容 531,399
关键字:

去重复