`

List的contains()方法

    博客分类:
  • J2SE
 
阅读更多

应用环境:从数据库中查询出满足一系列条件的记录,然后以对象的形式封装到List中去。此时假设有两个条件AB,满足A的记录集和为ListA,满足B的记录集合为ListB,现在要将ListAListB合并为一个List,注意ListAListB中可能有重复的记录(因为可能某条记录即满足条件A又满足条件B),要过滤掉重复的记录。

方法过程:我们假设List中存放的对象都是Order对象,属性orderId用于标识一个唯一的Order对象。

          List<order> list = new ArrayList<Order>();

          if(ListA!=null){

            Iterator it= ListA.iterator();

            while(it.hasNext()){

                list.add((Order)it.next());

            }

         }

if(ListB!=null){

            Iterator it= ListB.iterator();

            while(it.hasNext()){

              Order o=(Order)it.next();

              if(!list.contains(o))

                  list.add(o);

            }

         }

          首先我们将ListA中的对象全部装入到list中,然后在装入ListB中对象的

          时候对ListB中的每个元素进行一下判断,看list中是否已存在该元素,这里我们使用List接口的contains()方法。它的原理是这样的:如上例中的list.contains(o),系统会对list中的每个元素e调用o.equals(e),方法,加入list中有n个元素,那么会调用n次o.equals(e),只要有一次o.equals(e)返回了true,那么list.contains(o)返回true,否则返回false。

         因此为了很好的使用contains()方法,我们需要重新定义下Order类的equals方法,根据我们的业务逻辑,如果两个Order对象的orderId相同,那么我们认为它们代表同一条记录,于是equals方法定义如下:

          public boolean equals(Object obj) {

             if (this == obj)

                 return true;

             if (obj == null)

                 return false;

             if (getClass() != obj.getClass())

                 return false;

             final Order other = (Order) obj;

              if(this.getOrderid()!=other.getOrderid())

                 return false;

             return true;

        }

          这样只要ListB中有一条记录的orderIdlist中的某条记录的orderId

相等,那么我们就认为该记录已存在,不再将它放入list,这样就避免了重复记录的存在。

分享到:
评论

相关推荐

    JS List的contains方法与Array的contains方法的使用

    ### JS List的contains方法与Array的contains方法的使用 在JavaScript中,`Array`是用于存储多个值的数据结构。然而,原生JavaScript并没有提供一个直接的`contains`方法来检查数组是否包含某个元素。通常情况下,...

    转 关于List<T>中的Exists 和Contains的区别

    本文将深入探讨`Exists`和`Contains`这两个方法,它们都是用来检查`List&lt;T&gt;`中是否存在特定元素,但有各自的特点和适用场景。 首先,`Contains`方法是`List&lt;T&gt;`类中直接提供的一个成员,它接受一个类型为T的参数,...

    Scala的List类方法整合

    ### Scala的List类方法整合 在Scala编程语言中,`List` 类是处理有序集合的一种常见方式。本文将详细介绍 `List` 类中的多种方法及其用途,帮助开发者更好地理解和使用这些功能。 #### 1. `def + (elem: A): List...

    C# 有关List&lt;T&gt;的Contains与Equals方法.doc

    本文主要关注 `List&lt;T&gt;` 的两个关键方法:`Contains()` 和 `Equals()`,以及它们在处理集合比较和去重时的作用。 `Contains()` 方法: 此方法用于判断 `List&lt;T&gt;` 是否包含指定的元素。它接受一个参数 `T`,即列表中...

    list常用方法

    ### List常用方法详解 在Java编程语言中,`List`接口是集合框架的重要组成部分,它提供了有序元素集合的实现,并允许重复元素的存在。本文将详细解释`List`接口中的常用方法,帮助开发者更好地理解和运用这些功能...

    java的list取之方法

    boolean contains = list.contains("Element1"); // 查找元素的位置 int index = list.indexOf("Element1"); ``` #### 7. 其他操作 ```java // 获取元素数量 int size = list.size(); // 清空列表 list.clear();...

    C# list对象FindAll函数的四种写法

    在C#编程中,`List&lt;T&gt;` 是一个非常常用的集合类,它提供了丰富的操作方法,如查找、添加、删除等。在本篇文章中,我们将详细探讨`List&lt;T&gt;`的`FindAll`方法,并通过四种不同的写法来演示如何使用这个功能来筛选满足...

    CSharp_List.zip_C# list_C#中list_C#中list的用法_C#怎么引用List_c# list

    `List&lt;T&gt;`提供了`GetRange`方法,可以根据索引范围创建一个新的子列表: ```csharp List&lt;int&gt; subList = numbers.GetRange(1, 3); // 从索引1开始,取3个元素 ``` **12. 合并List&lt;T&gt;:** 通过`AddRange`方法可以将...

    javaList的定义和方法

    - `List`接口还提供了一些其他的方法,如`contains()`, `indexOf()`, `subList()`等,用于查找、检查和操作列表的不同方面。 - 如果需要支持多选,可以使用`setMultipleMode(true)`,但请注意,不是所有的`List`实现...

    C# List&lt;T&gt; Contains&lt;T&gt;()的用法小结

    `List&lt;T&gt;.Contains()` 方法的基本语法如下: ```csharp bool List&lt;T&gt;.Contains(T item); ``` 这个方法接收一个类型为 T 的参数 `item`,并返回一个布尔值,表示列表中是否存在与 `item` 相等的元素。相等性是通过...

    List 去重的6种方法(contains、迭代、hashSet、treeSet、linkedHashSet、stream)

    1:contains判断去重(有序) 此方法的优点的:理解起来比较简单,并且最终得到的集合也是有序的,这里的有序指的是新集合的排列顺序和原集合的顺序是一致的;但缺点是实现代码有点多,不够简洁优雅。 2:迭代器去重...

    list遍历集合源码

    此外,List接口还有其他一些方法,如`contains(Object o)`用于判断List是否包含特定元素,`sort(Comparator&lt;? super E&gt; c)`用于排序元素,以及`subList(int fromIndex, int toIndex)`用于获取子列表等。这些方法的...

    C# List用法详解

    1. List.Contains(T item):返回true或false,例如:if (mList.Contains("Hunter")) { Console.WriteLine("There is Hunter in the list"); } 需要注意的是,在选择使用IList还是ArrayList类时,需要考虑性能和类型...

    @Validated验证List集合的方法示例

    @Validated验证List集合的方法示例 在实际开发中,我们经常会遇到需要验证List集合的场景,而@Validated注解只能验证单个实体类,无法直接验证List集合。那么,如何实现List集合的验证呢?下面我们将通过示例代码,...

    10个Java经典的List面试题!.zip

    - insert()方法不存在于List接口中,但LinkedList提供了一个insert(int index, E element)方法。add(int index, E element)是List接口的方法,用于在指定位置插入元素,ArrayList会移动后续元素,LinkedList则只需...

    C# List用法

    if(myList.Contains(item)) Console.WriteLine("元素存在于List中"); else Console.WriteLine("元素不在List中"); 6. 给List中元素排序: myList.Sort(); 默认按照升序排序。 7. List中的元素顺序反转: myList...

    LinkedList实现List一些方法

    7. **其他方法**: LinkedList还提供了`contains(Object o)`、`indexOf(Object o)`和`lastIndexOf(Object o)`等方法,分别用于检查元素是否存在、查找元素的索引以及查找元素的最后一个出现的索引。这些方法都需要...

    dotnet-使用Linq筛选满足数组条件的List集合

    描述“Linq_List_Contrast_Baseon_Array 使用Linq筛选满足数组条件的List集合”进一步明确了这个任务是对比和筛选基于数组条件的List元素。 Linq提供了多种查询操作符,例如Where、Select、OrderBy等,用于处理各种...

    List,set,Map 的用法和区别

    Set 的主要方法有 add、remove、contains 等。Set 的实现类有 HashSet、LinkedHashSet 等。 Map 接口 Map 是一个键值对集合接口,每个键对应一个值。Map 的主要方法有 put、get、containsKey 等。Map 的实现类有 ...

Global site tag (gtag.js) - Google Analytics