精华内容
下载资源
问答
  • 如何判断一个list是否存在重复值

    千次阅读 2017-06-15 16:20:03
    方法一:  bool b= lst.GroupBy(l=>l.Name).Where(g=>g.Count()>1).Count()>0; 方法二: lst.ToDictionary(o => { return ...不出异常就没重复 http://bbs.csdn.net/topics/390492533


    方法一:


     bool b= lst.GroupBy(l=>l.Name).Where(g=>g.Count()>1).Count()>0;


    方法二:


    lst.ToDictionary(o => { return o.name; });
    不出异常就没重复



    http://bbs.csdn.net/topics/390492533



    展开全文
  • 如果想要集合中的元素不会有重复,那么推荐使用hashSet,如下: ...// list有重复元素的ArrayList   HashSet hSet = new HashSet(list);   list.clear();   list.addAll(hSet); 

    如果想要集合中的元素不会有重复,那么推荐使用hashSet,如下:

    [java] view plaincopy
    1. //  list是有重复元素的ArrayList  
    2.     HashSet hSet  =   new  HashSet(list);  
    3.     list.clear();  
    4.     list.addAll(hSet);  


    但是有时我们想删除某一个重复属性值(值相同)的某个元素,如下:

    [java] view plaincopy
    1. NetWork nw1 = new NetWork();  
    2. nw1.id = 1;  
    3. nw1.destip = "192.168.1.3";  
    4.   
    5. NetWork nw2 = new NetWork();  
    6. nw2.id = 2;  
    7. nw2.destip = "192.168.1.5";  
    8.   
    9. NetWork nw3 = new NetWork();  
    10. nw3.id = 3;  
    11. nw3.destip = "192.168.1.3";  
    12.   
    13. NetWork nw4 = new NetWork();  
    14. nw4.id = 4;  
    15. nw4.destip = "192.168.1.4";  
    16.   
    17. NetWork nw5 = new NetWork();  
    18. nw5.id = 5;  
    19. nw5.destip = "192.168.1.3";  
    20.   
    21. mList.add(nw1);  
    22. mList.add(nw2);  
    23. mList.add(nw3);  
    24. mList.add(nw4);  
    25. mList.add(nw5);  

    明显nw1、nw3、nw5中的ip值都一样,我们只需要一个就足够了,那么用ArrayList该如何循环遍历删除自身的元素值呢?

    [java] view plaincopy
    1. for (int i = 0; i < mList.size()-1; i++) {  
    2.     for (int j = mList.size()-1; j > i; j--) {  
    3.         if (mList.get(j).destip.equals(mList.get(i).destip)) {  
    4.             mList.remove(j);  
    5.         }  
    6.     }  
    7. }  
    两个for循环足矣,记住最好从尾部开始逐一比较,这样一旦某一个元素符号要求,需要delete,能保证删除尾部之上的,不会造成循环错乱。
    展开全文
  • List集合根据指定字段去除重复值

    千次阅读 2020-06-05 16:03:46
    主要通过反射获取指定对象属性,然后利用set集合,对指定属性的进行比较,结果相等则代表重复

    如果你是用的JDK8,那推荐你使用stream来操作

    List<String> resultList=oldList.stream()
                .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getUserName()+f.getAge()))), ArrayList::new));
    

    菜鸟教程

    end.

    自己造轮子:主要通过反射获取指定对象属性,然后利用set集合,对指定属性的值进行比较,结果相等则代表重复,代码如下:

    package cn.sinobest.sdg.util;
    
    import java.lang.reflect.Field;
    import java.util.*;
    
    /**
     * @description 集合工具类
     * @author: dengweiping
     * @time: 2020/6/1 14:49
     */
    public class ListUtil {
           /**
         * 根据指定对象属性去除重复对象
         *
         * @param list         传入的list集合
         * @param propertyName 指定的去重属性名称
         */
        public static <T> List<T> removeRepeat(List<T> list, String propertyName) {
            if (list == null || list.isEmpty()) {
                return null;
            }
            //根据属性值进行去重
            Set<T> sets = new TreeSet<>((o1, o2) -> {
                try {
                    Field field1 = o1.getClass().getDeclaredField(propertyName);
                    Field field2 = o2.getClass().getDeclaredField(propertyName);
                    field1.setAccessible(true);
                    field2.setAccessible(true);
                    Object obj1 = field1.get(o1);
                    Object obj2 = field2.get(o2);
                    //根据指定属性进行去重
                    return obj1.toString().compareTo(obj2.toString());
                } catch (NoSuchFieldException | IllegalAccessException e) {
                    e.printStackTrace();
                }
                return 0;
            });
            sets.addAll(list);
            return new ArrayList(sets);
        }
    
        /**
         * 根据指定key去除重复Map
         *
         * @param list    传入的list集合
         * @param keyName 指定的key
         */
        public static List<Map<String, Object>> removeMapRepeat(List<Map<String, Object>> list, String keyName) {
            if (list == null || list.isEmpty()) {
                return null;
            }
            //根据属性值进行去重
            Set<Map<String, Object>> sets = new TreeSet<>((m1, m2) -> {
                Object obj1 = m1.get(keyName);
                Object obj2 = m2.get(keyName);
                //根据指定的key进行去重
                return obj1.toString().compareTo(obj2.toString());
            });
            sets.addAll(list);
            return new ArrayList(sets);
        }
    
    }
    
    

    更多工具类可以查看我的博客:Java字符串、集合等工具类合集
    项目源码地址:全球同性交友网站

    展开全文
  • 1、判断对象是否存在于list集合中 用list的contains方法,即list.contains(object),返回的是boolean。 2、去掉list集合中重复的元素 方法一:循环元素删除public static void removeDuplicate(List list) { ...

    1、判断对象是否存在于list集合中
    用list的contains方法,即list.contains(object),返回的是boolean值。
    2、去掉list集合中重复的元素
    方法一:循环元素删除

    public static void removeDuplicate(List list) {    
            for ( int i = 0  i < list.size() - 1  i ++ ) {      
                for ( int j = list.size() - 1  j > i; j -- ) {        
                    if (list.get(j).equals(list.get(i))) {         
                        list.remove(j);        
                    }      
                 }     
            } 
                System.out.println(list); 
        }

    或者

    public static void removeDuplicate(List list) {    
            List<object> list1 = new ArrearyList<object>();
            for ( int i = 0  i < list.size() - 1  i ++ ) {      
                if(!list1.contains(list.get(i))){               
                list1.add(list.get(i))
            } 
                System.out.println(list); 
        }

    方法二:通过HashSet剔除

    public static void removeDuplicate(List list) {       
        HashSet h = new HashSet(list);       
        list.clear();       
        list.addAll(h); 
        System.out.println(list); 
    }

    一开始用过这个方法,但是因为需要的是不改变集合里对象的顺序,set集合是无序的,也就是说他会打乱你之前list集合中的顺序,所以按照自己需要的进行选择。

    方法三: 删除ArrayList中重复元素,保持顺序

    public static void removeDuplicateWithOrder(List list) {    
        Set set = new HashSet(); 
        List newList = new ArrayList(); 
        for (Iterator iter = list.iterator(); iter.hasNext();) {           
            Object element = iter.next();           
            if (set.add(element)) {
                 newList.add(element);
            }                        
        } 
          list.clear(); 
          list.addAll(newList); 
    }
    这个方法类似与方法一中我改进的那个方法。

    说明:判断两个对象相等是否要重写equals 和hashcode方法
    首先说建议的情况:比如你的对象想放到Set集合或者是想作为Map的key时,那么你必须重写equals()方法,这样才能保证唯一性。当然,在这种情况下,你不想重写hashCode()方法,也没有错。但是,对于良好的编程风格而言,你应该在重写equals()方法的同时,也重写hashCode()方法。
    必须重写hashCode()的情况:
    如果你的对象想放进散列存储的集合中(比如:HashSet,LinkedHashSet)或者想作为散列Map(例如:HashMap,LinkedHashMap等等)的Key时,在重写equals()方法的同时,必须重写hashCode()方法。
    最后明白两点就行了:
    1.hashCode()方法存在的主要目的就是提高效率。
    2.在集合中判断两个对象相等的条件,其实无论是往集合中存数据,还是从集合中取数据,包括如果控制唯一性等,都是用这个条件判断的,条件如下:
    首先判断两个对象的hashCode是否相等,如果不相等,就认为这两个对象不相等,就完成了。如果相等,才会判断两个对象的equals()是否相等,如果不相等,就认为这两个对象不相等,如果相等,那就认为这两个对象相等。
    上面的条件对于任何集合都是如此,只要理解上面的条件,你就明白了,为什么在有些情况下建议重写hashCode().有些情况下,是必须要重写的,只有一个目的,就是提高效率,你想想,如果你重写了hashCode(),只要不满足第一个条件,那就直接可以判断两个对象是不等的,也就不用花费时间再去比较equals了。
    最后总结一句话就是,hashCode()方法存在的主要目的就是提高效率,但是如果你想把对象放到散列存储结构的集合中时,是必须要重写的。

    展开全文
  • 个List有多个表的对象 表对象5个字段,所有对象的count字段都为1,现在想把name相等的对象合并,并且count会变成合并了几个就变为几。。。就是List中10个表对象,其中3个对象的name相等,就把他们合并为8个...
  • 今天碰到一需要判断泛型集合中的对象的某个字段是否有重复值的需求,特在此对方法进行记录。 大致思路是,将List泛型集合转成Set,并且通过Comparator,来自定义排序方式; 然后判断Set集合的数据长度是否与原本的...
  • java8用Stream查List对象某属性是否有重复 Java8开发中,针对List对象集合,常需要判断某个属性是否存在重复值。用Stream流处理能方便的得到结果。练习一下stream的一些用法。 测试示例Java代码 @Test public void...
  • python list列表中删除多个重复元素

    万次阅读 2018-04-15 17:26:02
    我们以下面这个list为例,删除其中所有为6的元素: l=[9,6,5,6,6,7,8,9,6,0] 首先尝试remove方法: l.remove(6) print(l) 结果为[9, 5, 6, 6, 7, 8, 9, 6, 0],只删除了第一个为6的元素。 如果采用for循环...
  • 去除List集合中的重复值(四种好用的方法)

    万次阅读 多人点赞 2015-12-03 11:28:56
    最近项目中需要对list集合中的重复值进行处理,大部分是采用两种方法,一种是用迭代list集合判断后赋给另一个list集合,一种是用赋给set集合再返回给list集合。 但是赋给set集合后,由于set集合是无序的,原先的...
  • java List去除重复数据的五种方式

    万次阅读 多人点赞 2019-05-31 12:38:30
    LinkedHashSet是在一ArrayList删除重复数据的最佳方法。LinkedHashSet在内部完成两件事: 删除重复数据 保持添加到其中的数据的顺序 Java示例使用LinkedHashSet删除arraylist中的重复项。在...
  • List carList1 = getList1......;  List carList2 = getList2......;  //以车号作为key  Map carMap = new HashMap();  for(Car car1 : carList1) carMap.put(car1.getNum(), car1);  for...
  • Java中判断List集合中是否有重复元素

    千次阅读 2019-08-01 10:31:43
    在开发工作中,我们有时需要判断List集合中是否含有重复的元素 我们不需要找出重复的元素,我们只需要返回一Boolean类型就可以了 如果使用循环遍历的方式,将会消耗大量的性能 我们只需要将List集合转化为Set...
  • 判断List是否有重复的数据

    千次阅读 2020-08-03 17:16:35
    首先,java中是没有这方法的。 但是,在java8中,可以通过stream来判断,非常简单: List<Integer> list = new ArrayList() ; list.add(1); list.add(2); list.add(1); long count= list.stream().distinct...
  • java 判断list是否有重复

    千次阅读 2019-02-12 14:21:25
    public static void main(String[] args) { ...List l = new ArrayList(); l.add(“1”); l.add(“2”); l.add(“2”); l.add(“3”); for (String str : l) { boolean b = s.add(str); if(!b){ System....
  • 问题描述 在.NET/C#应用程序编程开发中,如何判断一字符串集合List<string>中是否有重复的元素? ...现在有一简单的判断/检查lstNames字符串集合中是否有重复元素的实现,如下: i...
  • 判断list是否有重复的元素

    万次阅读 2018-09-03 15:18:07
    List&lt;Integer&gt; list = new ArrayList() { { add(1); add(2); add(1); } }; long count = list.stream().distinct().count(); boolean isRepeat = count &lt; list.size();...
  • List集合去除重复对象

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

    千次阅读 2017-06-12 12:43:36
    实体bean放进list集合值重复
  • public class List1 { public static void main(String[] args) { //第一集合 List<Test> list1=new ArrayList(); Test list1_1=new Test(); list1_1.setNumber(1); list1.add(list1_1); Test...
  • php向redis list一次性lPush多个值

    万次阅读 2019-03-28 00:19:31
    php redis扩展没有介绍向list中一次性push多个值的用法,但其实lPush和rPush是支持push多个值的,文档中介绍 lPush- Prepend one or multiple values to a list rPush- Append one or multiple values to a ...
  • 测试数据:mAllList 中包含100000无序无重复字符串,mSubList 中包含50000无序无重复字符串 方法一、ArrayList中提供的removeAll方法(效率最低) mAllList.removeAll(mSubList); 某次测试耗时:185665ms ...
  • 如何优雅更改一N层嵌套对象属性的...由于对象嵌套比较深(可能N层),每次赋值都需要重复嵌套过程(dp.data.treelis) 两次 而我们希望的是,调用和赋值,可以(至少看起来)一次完成 我们可以利用对象中的 ...
  • 而每次循环只是简单的set 对象的属性,set新的属性,而add进list中的对象还是同一对象id,也就是同一对象; 所以每次add之后,list发现对象引用和之前元素一样,就覆盖掉了之前add的对象。所以循环之后list中...
  • C# List集合中获取重复值及集合运算

    千次阅读 2019-07-15 17:25:07
    一、获取集合内重复值 public void GetDuplicateValue() { List<string> lisA = new List<string> { "A", "B", "C", "A" }; //方式一 借助字典 Dictionary<string, int> dic = new Dict...
  • # 比较好奇如果两个list想要生成一个dict,但是作为key的list有重复的情况下,会发生什么? name_list=["yun","li","guo",'yun','yun'] score_list=['90','80','90','70','100'] target_dict=dict(zip(name_list,...
  • 一、功能描述:比较个list中存储的map数据,比较的list的数据类型需一致,就能比较出存储的... 2、统计出每个list中存储的map的个数及重复的,进行比较 3、具体比较值 三、废话不说,直接上代码: priv...
  • Python 列表中多个字典合并重复

    千次阅读 2018-11-01 22:47:46
    Python 列表中多个字典合并重复项 data = [{'dates': 24, 'list_num': 1, 'rigist_num': 1, 'submit_num': 0, 'through_num': 0, 'loan_num': 0}, {'dates': 11, 'list_num': 1, 'rigist_num': 0, 'submit_num': 0,...
  • 个List比较,找出List中相同的

    千次阅读 2014-07-17 16:21:39
    今天做报表统计遇到这样的问题,就是分别个List对象,但是要获取到这两个List中相同的做为返回数据 故写下此文章,希望对其他童靴有所帮助,不在说,具体如操作下文: public class TestArray { ...
  • 在实际开发中,经常会遇到需要找出(删除)一个list中某些元素的属性相同的元素,或者两个list中某些元素的属性相等的元素,这种方法很,这里整理列出一些: 废话不说,上代码,注释掉的你们自己看 import java....
  • 获得python的list中含有重复值的index

    万次阅读 2016-12-12 16:27:47
    list.index( )获得的索引,但是如果list中含有的一样,例如含有两11,22,这样每次获得的都是第一个值的位置。 那么怎么解决这问题呢? 下面的程序对这问题做了一定的解答#!/usr/bin/env python # -*...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 416,351
精华内容 166,540
关键字:

多个list去比较值是否有重复