java集合容器的两个问题

要从一个List集合中,找出Person的id为id1的对象,除了遍历有什么更简便的写法?我记得c#中可以直接find,就一行代码?想让一个List集合中,所有元素的id作为一个数组输出如[id1,id2,id3...],除了遍历有什么简便写法?
梦里花落0921
浏览 384回答 2
2回答

慕田峪9158850

可能不太简洁,但是可以自己写:importjava.util.Arrays;importjava.util.Iterator;importjava.util.List;publicfinalclassListUtils{publicstaticTcollectFirst(finalIterablelist,finalPredicatepredicate){for(Telement:list){if(predicate.apply(element)){returnelement;}}returnnull;}publicstaticIterablemap(finalIterablelist,finalF1func){returnnewIterable(){@OverridepublicIteratoriterator(){returnnewIterator(){privateIteratori=list.iterator();@OverridepublicbooleanhasNext(){returni.hasNext();}@OverridepublicBnext(){returnfunc.apply(i.next());}@Overridepublicvoidremove(){i.next();}};}};}publicstaticvoidmain(String[]args){finalListintegers=Arrays.asList(1,2,3,4,5,6);finalIntegerresult=collectFirst(integers,newPredicate(){@Overridepublicbooleanapply(Integere){returne.compareTo(3)>0;}});System.out.println(String.format("Thefirstintegerlargerthan3is%d",result));finalIterableresults=map(integers,newF1(){@OverridepublicIntegerapply(Integerinteger){returninteger*integer;}});System.out.println("Thesquaresofthemare:");for(Integeri:results){System.out.print(i+"");}}publicinterfacePredicate{booleanapply(finalTe);}publicinterfaceF1{Bapply(finalAa);}}

狐的传说

很简单,这里选错了容器类型.明显应该是Map该干的事情建立Mapid->Person.两个问题迎刃而解让牛去拉磨,驴去耕地,是不对滴
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript