`
bruce198
  • 浏览: 236261 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

合并两个“list”

 
阅读更多

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

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

  1. List<order></order> list = new ArrayList<order></order>();   
  2.   
  3.           if(ListA!=null){   
  4.   
  5.             Iterator it= ListA.iterator();   
  6.   
  7.             while(it.hasNext()){   
  8.   
  9.                 list.add((Order)it.next());   
  10.   
  11.             }   
  12.   
  13.          }   
  14.   
  15.  if(ListB!=null){   
  16.   
  17.             Iterator it= ListB.iterator();   
  18.   
  19.             while(it.hasNext()){   
  20.   
  21.               Order o=(Order)it.next();   
  22.   
  23.               if(list.contains(o))   
  24.   
  25.                   list.add(o);   
  26.   
  27.             }   
  28.   
  29.          }   
  30.   

首先将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方法定义如下:

  1. public boolean equals(Object obj) {   
  2.   
  3.              if (this == obj)   
  4.   
  5.                  return true;   
  6.   
  7.              if (obj == null)   
  8.   
  9.                  return false;   
  10.   
  11.              if (getClass() != obj.getClass())   
  12.   
  13.                  return false;   
  14.   
  15.              final Order other = (Order) obj;   
  16.   
  17.               if(this.getOrderid()!=other.getOrderid())   
  18.   
  19.                  return false;   
  20.   
  21.              return true;   
  22.   
  23.         }   
  24.   

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

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

分享到:
评论
1 楼 javaliujie 2009-02-11  
这个页面怎么这样子?

相关推荐

    java合并LIST

    在本文中,我们将通过一个示例代码来演示如何使用Java语言来合并两个LIST。首先,我们定义了两个LIST,lst1和lst2,每个LIST中都包含一些UserBean对象。然后,我们使用addAll()方法将lst2合并到lst1中。 在合并过程...

    Java将2个List集合合并到一个List里面并排序工具类

    Java将2个List集合合并到一个List里面并排序工具类 1、Java编程资源,定义了一个名为`ListMerger`的工具类,主要包含一个名为`mergeAndSortLists`的静态方法。此方法用于将两个已经根据时间顺序排列的List合并成一...

    PTA 两个有序链表序列的合并

    总结来说,"PTA 两个有序链表序列的合并"这个题目要求我们掌握链表的基本操作,理解链表的特性,以及如何有效地合并两个有序链表。通过解决这个问题,我们可以加深对链表数据结构的理解,同时锻炼我们的逻辑思维和...

    详解Java8合并两个Map中元素的正确姿势

    在Java8中,合并两个Map中的元素是一项常见的操作,尤其是在处理数据集合时。本文将深入探讨如何正确地合并两个Map,重点介绍两种方法:`Map.merge()` 和 `Stream.concat()`。这两种方法在处理Map合并时有各自的特点...

    实现两个有序单链表的合并

    首先,我们需要理解单链表的基本概念,然后探讨如何对其进行排序,最后学习如何合并两个已排序的单链表。 单链表是一种线性数据结构,其中每个节点包含数据和一个指向下一个节点的指针。链表的头节点通常是第一个...

    Python将多个list合并为1个list的方法

    如果只是简单地合并两个list且不关心内存效率,使用"+"运算符可能是最直观的选择。如果需要合并多个list并保持原始list不变,`extend()`方法更为合适。而当需要在特定位置插入list时,切片操作提供了更大的灵活性。...

    将两个递增的链表合并为一个非递减的链表

    - 合并两个链表 - 输出链表 2. **选择排序算法**:在本题目的实现中,使用了选择排序来对链表进行排序。虽然对于递增链表来说,排序步骤是多余的,但为了满足题目要求,这里还是进行了排序处理。 3. **链表合并...

    C++ 自实现的List

    实现List的加法操作可能涉及合并两个List。这需要创建一个新的List,遍历两个源List并依次添加元素。 ```cpp List operator+(const List& other) const { List result; ListNode* src1 = head; ListNode* src2 =...

    C++ list详解

    - `splice()`:合并两个list或在特定位置插入另一个list的元素。 - `reverse()`:反转链表中的元素顺序。 ### 优势 - **高效插入和删除**:由于`list`是双向链表,因此在任意位置插入或删除元素都很快。 - **连续...

    两个有序链表序列的合并_C语言_

    这个问题要求我们合并两个已排序的链表,使得合并后的链表仍然保持非降序排列。在这里,我们主要讨论如何使用C语言来解决这个问题。 首先,我们需要了解链表的基本概念。链表是一种线性数据结构,它的元素(节点)...

    将两个链表的合并实验报告

    《数据结构》实验报告——合并两个链表 实验的核心任务是合并两个已排序的循环链表,形成一个新的有序循环链表。在这个过程中,我们需要理解链表的基本操作,如创建、插入、合并以及输出链表。 1. 链表结构: 在...

    C++ List学习

    - `splice()`: 合并两个list,或将一个list的元素插入到另一个list中。 - `swap()`: 交换两个list的元素。 - `unique()`: 删除list中相邻的重复元素。 2. **List的使用实例**: - 上述代码展示了如何创建和操作...

    python的list用法.doc

    除了上述基本操作,Python的list还支持许多其他功能,如`extend()`用于合并两个list,`remove()`用于移除特定值的第一个匹配项,`index()`用于获取特定值的索引,以及`sort()`用于对list进行排序。此外,列表推导式...

    两个循环单链表合并成一个

    要合并两个循环单链表,我们需要遵循以下步骤: 1. 定义节点结构:首先,定义链表节点的结构,例如: ```cpp struct Node { int data; Node* next; }; ``` 2. 创建单链表:创建两个循环单链表,每个链表至少包含...

    如何基于Python按行合并两个txt

    合并前第一个文件和第二个文件 代码 file1 = open(my.txt,r) file2 = open(ids.txt,r) file1_lists =file1.readlines() file2_lists =file2.readlines() file3_list = [] file4_list = [] for i in file1_lists: ...

    java合并两个文件夹内容

    在IT行业中,尤其是在Java编程和运维领域,有时候我们需要对文件系统进行操作,比如合并两个文件夹的内容。这个任务可以通过编写脚本来实现,特别是在自动化运维流程中。本文将深入探讨如何使用Java来完成这个任务,...

    两个有序顺序表合并成一个顺序表,还是有序的

    本示例程序提供了一种简单有效的方法来合并两个有序顺序表。通过使用指针和条件判断,我们可以确保合并后的顺序表仍然保持有序状态。这种合并策略不仅适用于顺序表,也可以应用于其他类型的数据结构,如链表等。此外...

    stl容器list的使用

    5. **其他操作**: 还包括`push_back`在末尾添加元素,`pop_back`删除末尾元素,`push_front`在开头添加元素,`pop_front`删除开头元素,`splice`合并两个list,`reverse`反转list等。 **三、VC6.0环境下的list代码...

    线性表的合并/c语言

    在实际编程中,为了使代码更易于理解和维护,我们通常会定义一些辅助函数,比如`createNode()`用于创建新节点,`insertNode()`用于在链表中插入元素,`mergeLists()`用于合并两个有序链表,以及`printList()`用于...

    list to list 将list内容移到另一个list

    例如,`$.merge()` 函数可以合并两个数组。 综上所述,`list to list` 涉及到的是列表或数组的内容迁移、复制或合并,这是编程中常见的数据操作,特别是在处理大量数据时。`listtolist.js` 文件可能提供了一些方便...

Global site tag (gtag.js) - Google Analytics