`
wuyufeixue
  • 浏览: 135708 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

List的contains()方法(转)

    博客分类:
  • Java
 
阅读更多
应用环境:从数据库中查询出满足一系列条件的记录,然后以对象的形式封装到List中去。此时假设有两个条件A和B,满足A的记录集和为ListA,满足B的记录集合为ListB,现在要将ListA和ListB合并为一个List,注意ListA和ListB中可能有重复的记录(因为可能某条记录即满足条件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中有一条记录的orderId和list中的某条记录的orderId
相等,那么我们就认为该记录已存在,不再将它放入list,这样就避免了重复记录的存在。
分享到:
评论
2 楼 qyc505008987 2016-04-27  







1 楼 youyao816 2015-09-08  
|||||||||||||||
||||||||||||||
||||||||||||||
|||||||||||||
|||||||||||||
||||||||||||
||||||||||||
|||||||||||
|||||||||||
||||||||||
||||||||||
|||||||||
|||||||||
||||||||
||||||||
|||||||
|||||||
||||||
||||||
|||||
|||||
||||
||||
|||
|||
||
||
|
|

相关推荐

    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...

    list常用方法

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

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

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

    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#将DataTable转化为List&lt;T&gt;

    这是通过调用DataTable的Columns.Contains(tempName)方法来检查DataTable中是否存在与属性名对应的列,该方法调用时会忽略大小写,因此可以匹配到Camel命名法的列名。 通过上述过程,我们可以将DataTable中的每一行...

    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用法

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

    C# List用法详解

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

    C#List泛型集合实例,源码

    下面将详细阐述`List&lt;T&gt;`的特性和使用方法。 首先,`List&lt;T&gt;`的泛型参数`T`代表了集合中元素的类型。例如,当我们创建一个存储整数的`List&lt;int&gt;`时,`T`就是`int`。这样做的好处是能够确保集合中的所有元素都是同一...

    @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则只需...

    Collection List Set Map 区别记忆

    `Collection`接口定义了基本的添加、删除、查询元素的方法,如`add()`, `remove()`, `contains()`等。 `List`接口继承自`Collection`,并引入了索引的概念,允许元素有序且重复。最常用的实现类有`ArrayList`和`...

Global site tag (gtag.js) - Google Analytics