c# – 在Java集合中搜索.为什么这么难?
发布时间:2020-12-15 19:34:47 所属栏目:百科 来源:网络整理
导读:有没有合理的解释,为什么在 Java集合中搜索元素是如此困难? 例如,假设我有: ArrayListPeople listPeople = new ArrayListPeople();public class People{ public String name; public String age; //some other code here} 你有了这个想法……现在,如果我想
有没有合理的解释,为什么在
Java集合中搜索元素是如此困难?
例如,假设我有: ArrayList<People> listPeople = new ArrayList<People>(); public class People { public String name; public String age; //some other code here } 你有了这个想法……现在,如果我想从列表中获得一个具有给定名称的人,让我们说’Anthares’我必须做很多工作:创建一个名为’Anthares’的新人,可能会启动它其他数据,为Person类预定义我的equals方法,然后调用listPeople.IndexOf(tempPerson),最后获取返回的int并生成listPeople [idx] 为什么这一切都是痛苦的.例如,在C#中我可以创建一个linq表达式,将它传递给我收集的正确方法,就是这样.一行简单的代码. 解决方法
不,你没有 – 你可以这样做:
Person found = null; for (Person person : listPeople) { if ("Anthares".equals(person.name)) { found = person; break; } } // Check for found == null etc 是的,它仍然比LINQ更多的工作,但这基本上是因为C#以lambda表达式的形式有闭包.如果你愿意写,你可以在Java中实现类似的东西: Person person = FakeLinq.findFirst(listPeople,new Predicate<Person>() { @Override boolean matches(Person person) { return person.name.equals("Anthares"); } }); C#解决方案的大多数简洁性只是让您非常简单地表达该谓词. Java 7(希望!)有一些与lambda表达式相似的东西,此时这在Java中也变得可行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- cocos2dx游戏资源加密之XXTEA
- vue 中动态绑定class 和 style的方法代码详解
- 使用Oracle数据库源控件
- ruby-on-rails – 如何确保最初根据活动记录对象属性检查ra
- 笔记-----------------------------A*寻路算法
- ruby-on-rails-3 – 如何在Rails 3.2中验证其父模型范围内嵌
- SQLite FAQ常见问题解答
- SSIS连接Oracle数据源
- ruby-on-rails – 如何在rails中设置postgresql命令超时
- cocos2dx setGlobeZOrder setLocalZOrder setOrderOfArriva