delphi将两个Strlist合并,求交集 (保留相同的)

Function StrList_Join(StrListA,StrListB:String):String; //将两个Strlist合并,求交集 (保留相同的)
var SListA,SListB,SListC:TStringList;
i:Integer;
begin
Result := ‘‘;
Try
SListA := TStringList.Create;
SListB := TStringList.Create;
SListC := TStringList.Create;
SListA.CommaText := StrListA; SListB.CommaText := StrListB;
for i:=0 to SListA.Count-1 do begin
if SListB.IndexOf(SListA[i])>=0 then SListC.Add(SListA[i]);
end;
Result := SListC.CommaText;
Finally
FreeAndNil(SListA); FreeAndNil(SListB); FreeAndNil(SListC);
end;
end;

时间: 2024-10-11 12:26:52

delphi将两个Strlist合并,求交集 (保留相同的)的相关文章

delphi将两个Strlist合并,求并集

Function StrList_Merge(StrListA,StrListB:String):String; //将两个Strlist合并,求并集 var SListA,SListB,SListC:TStringList; i:Integer; begin Result := ''; Try SListA := TStringList.Create; SListB := TStringList.Create; SListC := TStringList.Create; SListA.Comm

两个有序数组求交集

采用小的在多的进行二分查找的方法. 设两个指向两个数组末尾的指针,取较小的那个数在另一个数组中二分查找,找到,则存在一个交集,并且将该目标数组的指针指向该位置前一个位置.如果没有找到,同样可以找到一个位置,使得目标数组中在该位置后的数肯定不在另一个数组中存在,直接移动该目标数组的指针指向该位置的前一个位置,再循环找,直到一个数组为空. 其实类似归并算法的merge函数,就是交替算法来填充 if a[i]<b[j] t[num++] = a[i++]; else t[num++] = b[j++]

【Java】两个ArrayList之间求交并补

同样的方法应该也使用在<[Java]Java中的Collections类--Java中升级版的数据结构>(点击打开链接)中提及到Java中的各类集合,这里拿各位编程最常用的ArrayList做例子.这个东西除了用来做可变形数组以外,有时候还会出现要在两个ArrayList之间进行集合运算,我在这里举出最常见的求交并补的例子,其余的复杂的集合运算,请自己打开<离散数学>或者<数理逻辑>一书慢慢推导吧.我们是程序猿,不是数学家,要在两个ArrayList之间求交并补已经很少

Java大集合求交集的方法比较

两个List集合求交集想必学过Java的都知道用系统自带的retainAll()方法,但是在数据量比较大时,这个方法效率并不高,利用空余时间研究了几种数据量较大时求两个集合交集的办法.本文主要研究了JDK自带方法求交集.Guava集合求交集.Java8的parallelStream并行流求交集.双指针方法求交集以及bitmap求交集的方法和效率. JDK自带方法 最常用的求交集方法,在小数据量的时候没什么问题,一旦两个集合的数据量达到几十万级别时,效率就严重偏低,底层实际上也是两个for循环,只

数组去重和两个数组求交集

引言 今天在项目中一个功能要用到两个数组求交集的算法. 大概是这样: 两个表格分别用easyui datagrid实现,要把A表格的一列数据和B表格的一列数据取出来,然后去重,去重后求交集. 那么在计算出的交集中分别根据求出的数据选中两个表格的对应行. 故用到js数组去重和求交集. 交集 Array.prototype.intersect = function(b) { var flip = {}; var res = []; for(var i=0; i< b.length; i++) fli

Linux 两个文件求交集、并集、差集

一.交集 sort a.txt b.txt | uniq -d 二.并集 sort a.txt b.txt | uniq 三.差集 a.txt-b.txt: sort a.txt b.txt b.txt | uniq -u b.txt - a.txt: sort b.txt a.txt a.txt | uniq -u 四.相关的解释 使用sort可以将文件进行排序,可以使用sort后面的玲玲,例如 -n 按照数字格式排序,例如 -i 忽略大小写,例如使用-r 为逆序输出等 uniq为删除文件中重

【C++】判断元素是否在vector中,对vector去重,两个vector求交集、并集

#include <iostream> #include <vector> #include <algorithm> //sort函数.交并补函数 #include <iterator> //求交并补使用到的迭代器 using namespace std; //打印容器vector void print_vector(vector<int> v){ if(v.size()>0){ cout<<"{"; for

sql求两表的并集、交集、非交集、差集、结果集排序

create table A( id int IDENTITY(1,1) Not null primary key, name varchar(20) not null default(''), ) INSERT INTO [A]([name]) VALUES('a') INSERT INTO [A]([name]) VALUES('b') INSERT INTO [A]([name]) VALUES('c') INSERT INTO [A]([name]) VALUES('d') INSERT

参数筛选查询——多表求交集(INTERSECT)+WITH AS

先说要实现的需求:一个产品表A,一个属性与属性值表B(属性与属性值存于同一个表,类似于父级与子级的关系),一个产品-属性关联表C,要实现通过多个参数筛选获取符合条件的产品记录. 本能第一反应就是用and连接多个参数(参数个数不定),谁知结果集却是空,主要是表的设计结构决定,表C是一个产品的一个属性就是一条记录,也就是说一个产品可能有多个属性,对应多条记录.而一个属性又可能关联着多个产品,即产品与属性是多对多的关系.用and连接肯定是得不到结果的.怎么办?转换一下思路,用and是将所有属性值一起作