应用环境:从数据库中查询出满足一系列条件的记录,然后以对象的形式封装到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,这样就避免了重复记录的存在。
分享到:
相关推荐
### JS List的contains方法与Array的contains方法的使用 在JavaScript中,`Array`是用于存储多个值的数据结构。然而,原生JavaScript并没有提供一个直接的`contains`方法来检查数组是否包含某个元素。通常情况下,...
本文将深入探讨`Exists`和`Contains`这两个方法,它们都是用来检查`List<T>`中是否存在特定元素,但有各自的特点和适用场景。 首先,`Contains`方法是`List<T>`类中直接提供的一个成员,它接受一个类型为T的参数,...
### Scala的List类方法整合 在Scala编程语言中,`List` 类是处理有序集合的一种常见方式。本文将详细介绍 `List` 类中的多种方法及其用途,帮助开发者更好地理解和使用这些功能。 #### 1. `def + (elem: A): List...
本文主要关注 `List<T>` 的两个关键方法:`Contains()` 和 `Equals()`,以及它们在处理集合比较和去重时的作用。 `Contains()` 方法: 此方法用于判断 `List<T>` 是否包含指定的元素。它接受一个参数 `T`,即列表中...
### List常用方法详解 在Java编程语言中,`List`接口是集合框架的重要组成部分,它提供了有序元素集合的实现,并允许重复元素的存在。本文将详细解释`List`接口中的常用方法,帮助开发者更好地理解和运用这些功能...
boolean contains = list.contains("Element1"); // 查找元素的位置 int index = list.indexOf("Element1"); ``` #### 7. 其他操作 ```java // 获取元素数量 int size = list.size(); // 清空列表 list.clear();...
在C#编程中,`List<T>` 是一个非常常用的集合类,它提供了丰富的操作方法,如查找、添加、删除等。在本篇文章中,我们将详细探讨`List<T>`的`FindAll`方法,并通过四种不同的写法来演示如何使用这个功能来筛选满足...
`List<T>`提供了`GetRange`方法,可以根据索引范围创建一个新的子列表: ```csharp List<int> subList = numbers.GetRange(1, 3); // 从索引1开始,取3个元素 ``` **12. 合并List<T>:** 通过`AddRange`方法可以将...
- `List`接口还提供了一些其他的方法,如`contains()`, `indexOf()`, `subList()`等,用于查找、检查和操作列表的不同方面。 - 如果需要支持多选,可以使用`setMultipleMode(true)`,但请注意,不是所有的`List`实现...
`List<T>.Contains()` 方法的基本语法如下: ```csharp bool List<T>.Contains(T item); ``` 这个方法接收一个类型为 T 的参数 `item`,并返回一个布尔值,表示列表中是否存在与 `item` 相等的元素。相等性是通过...
1:contains判断去重(有序) 此方法的优点的:理解起来比较简单,并且最终得到的集合也是有序的,这里的有序指的是新集合的排列顺序和原集合的顺序是一致的;但缺点是实现代码有点多,不够简洁优雅。 2:迭代器去重...
此外,List接口还有其他一些方法,如`contains(Object o)`用于判断List是否包含特定元素,`sort(Comparator<? super E> c)`用于排序元素,以及`subList(int fromIndex, int toIndex)`用于获取子列表等。这些方法的...
1. List.Contains(T item):返回true或false,例如:if (mList.Contains("Hunter")) { Console.WriteLine("There is Hunter in the list"); } 需要注意的是,在选择使用IList还是ArrayList类时,需要考虑性能和类型...
@Validated验证List集合的方法示例 在实际开发中,我们经常会遇到需要验证List集合的场景,而@Validated注解只能验证单个实体类,无法直接验证List集合。那么,如何实现List集合的验证呢?下面我们将通过示例代码,...
- insert()方法不存在于List接口中,但LinkedList提供了一个insert(int index, E element)方法。add(int index, E element)是List接口的方法,用于在指定位置插入元素,ArrayList会移动后续元素,LinkedList则只需...
if(myList.Contains(item)) Console.WriteLine("元素存在于List中"); else Console.WriteLine("元素不在List中"); 6. 给List中元素排序: myList.Sort(); 默认按照升序排序。 7. List中的元素顺序反转: myList...
7. **其他方法**: LinkedList还提供了`contains(Object o)`、`indexOf(Object o)`和`lastIndexOf(Object o)`等方法,分别用于检查元素是否存在、查找元素的索引以及查找元素的最后一个出现的索引。这些方法都需要...
Set 的主要方法有 add、remove、contains 等。Set 的实现类有 HashSet、LinkedHashSet 等。 Map 接口 Map 是一个键值对集合接口,每个键对应一个值。Map 的主要方法有 put、get、containsKey 等。Map 的实现类有 ...
下面将详细阐述`List<T>`的特性和使用方法。 首先,`List<T>`的泛型参数`T`代表了集合中元素的类型。例如,当我们创建一个存储整数的`List<int>`时,`T`就是`int`。这样做的好处是能够确保集合中的所有元素都是同一...