A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiewen 中级黑马   /  2013-4-26 00:42  /  2174 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 xiewen 于 2013-5-15 00:36 编辑

有两个List集合列表,编写一个方法返回这两个List集合列表相同元素的List列表
a.这两个List集合里装的是Student对象,Student类里有一个int类型的id字段
b.这两个List集合每个都至少有10万条数据,重点考虑性能

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

16 个回复

倒序浏览
曹睿翔 来自手机 金牌黑马 2013-4-26 01:16:50
沙发
等等回复,没人解决你就要自己完善了啊
回复 使用道具 举报
曹睿翔 发表于 2013-4-26 01:16
等等回复,没人解决你就要自己完善了啊

我就是不知道所以才问大家啊
回复 使用道具 举报
breeze 来自手机 中级黑马 2013-4-26 07:58:36
板凳
用List自己的retainsAll方法就是用来返回两个集合的交集的,如果一定要自己写一个方法那就便利较小的那个集合,if (largelargeList.contain(smallList.get(i)) {newnewList.add(smallList.get(i)); i++;} 如果大集合包含了小集合中某一个元素,将这个元素加入新的集合

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

回复 使用道具 举报
breeze 发表于 2013-4-26 07:58
用List自己的retainsAll方法就是用来返回两个集合的交集的,如果一定要自己写一个方法那就便利较小的那个集 ...

深藏不露啊,可以贴出代码不,想法不错,方法名字起的很专业
回复 使用道具 举报
本帖最后由 刘胜寒 于 2013-4-26 09:26 编辑

性能...把其中的一个list的元素放入到Hashset容器中因为容易起去重。。
要重写hashCode和equalse方法
然后用另个的list中的元素去判断Hashset中是否包含这个元素
如果返回为true则把这个元素添加到List集合中
这样的话只要 10w+10w了
要是用Treeset应该是10w+log(10w)/log(2)
回复 使用道具 举报
xiewen 中级黑马 2013-4-26 10:09:16
7#
刘胜寒 发表于 2013-4-26 09:25
性能...把其中的一个list的元素放入到Hashset容器中因为容易起去重。。
要重写hashCode和equalse方法
然后 ...

还有没有别的好方法?
回复 使用道具 举报
xiewen 发表于 2013-4-26 10:09
还有没有别的好方法?


不过基本思想一致
都是用哈希表来判断是否相同,不用HashSet来实现
直接用一个boolean类型的数组来替换HashSet
比HashSet要快....而且节省内存空间...
但是你要自己写个Hash函数这个有点小不爽
不要问我怎么写Hash函数....其实我也不回..
java提供这个HashCode其实也不错
回复 使用道具 举报
xiewen 中级黑马 2013-4-26 11:18:27
9#
刘胜寒 发表于 2013-4-26 11:15

不过基本思想一致
都是用哈希表来判断是否相同,不用HashSet来实现

求代码?
回复 使用道具 举报
刘胜寒 发表于 2013-4-26 09:25
性能...把其中的一个list的元素放入到Hashset容器中因为容易起去重。。
要重写hashCode和equalse方法
然后 ...

求代码!
回复 使用道具 举报
xiewen 发表于 2013-4-26 11:18
求代码?

哥们你别逼我啊.....
回复 使用道具 举报
breeze 发表于 2013-4-26 07:58
用List自己的retainsAll方法就是用来返回两个集合的交集的,如果一定要自己写一个方法那就便利较小的那个集 ...

求代码啊
回复 使用道具 举报
breeze 发表于 2013-4-26 07:58
用List自己的retainsAll方法就是用来返回两个集合的交集的,如果一定要自己写一个方法那就便利较小的那个集 ...

retainsAll方法性能高不?
回复 使用道具 举报
xiewen 发表于 2013-4-26 11:23
retainsAll方法性能高不?

貌似不行...
虽然是系统的提供的东西...
系统提供的东西通用性强
但是牺牲了效率..
这个你都懂的..
不信我们可以测试一下吗..
超过100w估计就能看出来了..
回复 使用道具 举报
xiewen 发表于 2013-4-26 11:21
求代码啊

把你的Student类发过来
回复 使用道具 举报
曹睿翔 发表于 2013-4-26 09:23
深藏不露啊,可以贴出代码不,想法不错,方法名字起的很专业

多谢夸奖了, 因为是手机发的所以代码就没能敲上
回复 使用道具 举报
刘胜寒 发表于 2013-4-26 11:29
貌似不行...
虽然是系统的提供的东西...
系统提供的东西通用性强

为毛这么专业呀寒寒,反正我学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马