草庐IT

05-Collection

全部标签

java - synchronized Collection 的 toArray() 方法是同步的吗?

如果我有一个这样的同步集合Collectionc=Collections.synchronizedCollection(myCollection);synchronizedCollection的javadoc提到外部迭代必须像这样同步:synchronized(c){Iteratori=c.iterator();while(i.hasNext()){process(i.next());}}我可以假设c.toArray()是同步的,因此当方法执行时集合不会发生变化吗?或者我是否也需要同步它:synchronized(c){c.toArray();} 最佳答案

Java - Collection.max 比较器的内联定义

我正在寻找Python片段的Java等价物max_valued_key=max(str_to_double_map.keys(),key=lambdax:str_to_double_map[x])我想要像Collections.max这样的标准有没有办法用比较器的内联定义来做到这一点,因为我不想为每个其他比较器再写一个类。我试过下面的代码失败了depScores=foo();Stringdep=Collections.max(depScores.keySet(),newComparator(){@Overridepublicintcompare(Stringo1,Stringo2){r

java - 将 Set<Object> 转换为 Collection<String>

我有一个Set.我需要一个Collection从它。我可以考虑制作一个for循环来添加和转换所有对象,但这很难看,而且可能也很慢。@OverridepublicCollectionkeys(){//propsisbasedonHashMapSetkeys=newHashSet();for(Objecto:props.keySet()){keys.add((String)o);}returnkeys;}什么是正确的方法? 最佳答案 如果你知道所有Object在HashSet里面是字符串,你可以直接转换它:Collectionset=(

java - 为什么 Collection<T> 不实现 Stream<T>?

这个问题在这里已经有了答案:Whydoesn'tjava.util.CollectionimplementthenewStreaminterface?(1个回答)关闭7年前。这是一个关于API设计的问题。当在C#中添加扩展方法时,IEnumerable获取所有启用直接在所有集合上使用lambda表达式的方法。随着Java中lambda和默认方法的出现,我希望Collection将实现Stream并为其所有方法提供默认实现。这样,我们就不需要调用stream()来利用它提供的功能。图书馆架构师选择不太方便的方法的原因是什么?

Java 8 - 从 Collection.stream.map() 调用多参数方法

我使用Java8Streams已有一段时间了。我遇到过这样一种情况,我需要通过List流式传输并将每个元素与另一个参数一起传递给静态方法。在Java8中有可能吗?........Stringdesignation="Engineer";Listnames=newArrayList();names.add("ABC");names.add("DEF");names.add("GHI");names.stream().map(MyClass::createReport);..........classMyClass{publicstaticvoidcreateReport(Stringna

java - jackson : custom collection serialization to JSON

我正在尝试使用一个属性对类MyRootClass进行json序列化,该属性是第二个类MyClass的元素集合:publicclassMyRootClass{privateListlist=newArrayList();//getter/setter}publicclassMyClassimplementsMyInterface{privateStringvalue="test";//getter/setter}以下代码:MyRootClassroot=newMyRootClass();root.getList().add(newMyClass());ObjectMappermapper

java - 获取 "illegal access to loading collection"错误

当我在没有实现hashcode()和toString()的情况下执行我的程序时,它可以正常工作。但是,只要我包含hashcode()和toString(),就会出现“非法访问加载集合”错误。我的hbm文件是1)booking.hbm.xml2)Passenger.hbm.xml3)用户.hbm.xml任何人都可以解释错误吗? 最佳答案 您的hashcode和equals方法无法正常工作。确保它们是正确的。toString()与集合类无关,但hashcode和equals有。我假设您已经覆盖了hashcode和equals而不仅仅是h

Java 泛型 : adding wrong type in collection

谁能解释一下?我有这两个类:abstractclassAnimal{publicvoideat(){System.out.println("Animaliseating");}}classDogextendsAnimal{publicvoidwoof(){System.out.println("woof");}}classCatextendsAnimal{publicvoidmeow(){System.out.println("meow");}}这是Action:importjava.util.ArrayList;importjava.util.List;publicclassTest

Java 8. collection.stream() 和 Stream.of(collection) 的区别

你能给我解释一下吗?为什么Stream.of(l1,l2).flatMap((x)->x.stream()).forEach((x)->System.out.println(x));和Stream.of(l1,l2).flatMap((x)->Stream.of(x)).forEach((x)->System.out.println(x));不同吗? 最佳答案 Stream没有Stream.of(Collection)方法。它确实有一个方法staticStreamof(Tt)如果你传递一个Collection使用这种方法你会得到一个

java - 在 GWT 中使用 Google Common Collection

这是一个简单的问题,但我遇到了问题......我试图在GWT客户端代码中使用Google公共(public)集合的Objects.equal()方法,但我一直收到错误20:12:10.001[ERROR][gwt_regex]Line39:Nosourcecodeisavailablefortypecom.google.common.base.Objects;didyouforgettoinheritarequiredmodule?试图通过Google寻找答案,但找不到任何关于此的答案-每个人都只是说“Google集合应该与GWT开箱即用”。 最佳答案