Java求两Collection的交集

我想求两个Collection的交集,源代码如下:Collection<Message>msgCollection=getMessageCollection();Coll... 我想求两个Collection的交集,源代码如下:

Collection<Message> msgCollection = getMessageCollection();
Collection<Message> othMsgCollection = othRouter.getMessageCollection();
Collection<Message> intersectionMsgCollection = this.intersection(msgCollection,othMsgCollection);

public <T> Collection<T> intersection(Collection<T> collection1, Collection<T> collection2) {
//Collection<T> collection = new Collection<T>(); //an error?
Collection<T> collection = new ArrayList<T>(); //How would it be??
for (T t : collection1) {
if(collection2.contains(t)) {
collection.add(t);
}
}
return collection;
}
但结果不对,举例如下:
[M116, M140, M250, M120, M98]
[M116, M140, M250, M187, M98, M120]
[]

我想 intersection()有问题,求指点!
展开
 我来答
百度网友485dc0f
推荐于2016-02-13 · TA获得超过860个赞
知道小有建树答主
回答量:381
采纳率:100%
帮助的人:327万
展开全部

intersection()没问题。使用1.7测试代码如下:


import java.util.ArrayList;
import java.util.Collection;

public class Test {
public static void main(String[] args) {
String[] arr1 = {"M116","M140","M250","M120","M98"};
String[] arr2 = {"M116","M140","M250","M187","M98","M120"};
Collection<String> collection1 = toCollection(arr1);
Collection<String> collection2 = toCollection(arr2);
Collection<String> collection = intersection(collection1, collection2);
for (String s : collection) {
System.out.println(s);
}
}

public static <T> Collection<T> intersection(Collection<T> collection1,
Collection<T> collection2) {
Collection<T> collection = new ArrayList<T>(); // How would it be??
for (T t : collection1) {
if (collection2.contains(t)) {
collection.add(t);
}
}
return collection;
}

public static <T>Collection<T> toCollection(T[] arr){
Collection<T> collection = new ArrayList<T>();
for (T t : arr) {
collection.add(t);
}
return collection;
}
}
追问
谢谢您的回答。我刚才测了下,的确没问题。

看来问题在这,我的msgCollection是这样得来的:(区别在于String与HashMap???)
private HashMap messages;
messages.values()

在线等进一步指点!
追答
不明白什么意思。
御剑丶倾城
2014-10-01 · TA获得超过235个赞
知道答主
回答量:215
采纳率:0%
帮助的人:87.2万
展开全部
不管还是问题还是 回答 都是涨见识了
我习惯的做法是转换为list 然后比较 给个意见 这方法中不
List<T> list = new ArrayList(c);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b2756ad
2014-10-01 · 超过14用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:18.2万
展开全部
你这个变量名起了真是啰嗦,是intersection方法写的不对 Collection集合可以用for便利吗?
需要遍历器 具体看看这个网址
http://zhidao.baidu.com/link?url=lf57n3xqeGtrAHWBhxahaBBiIRAeZ7fwKy3kltKpVCsyxdvA63qozeEuj06-8OUoqIeMotXtniYLZRgos3RP0q
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式