草庐IT

immutable-collections

全部标签

java - 不可变对象(immutable对象)是线程安全的,但为什么呢?

例如,一个线程通过创建它的对象来创建和填充不可变类的引用变量,另一个线程在第一个线程完成之前启动并创建不可变类的另一个对象,不可变类不会使用是线程不安全的吗?创建不可变对象(immutable对象)也意味着所有字段都必须标记为final。itmaybenecessarytoensurecorrectbehaviorifareferencetoanewlycreatedinstanceispassedfromonethreadtoanotherwithoutsynchronization他们是否想说其他线程可能会将引用变量重新指向不可变类的其他对象,这样线程将指向不同的对象而导致状态不一

java - 所有原始包装类都是不可变对象(immutable对象)吗?

Java中的所有原始包装类都是不可变对象(immutable对象)吗?字符串是不可变的。其他不可变对象(immutable对象)是什么? 最佳答案 任何不给您任何方法来更改其中数据的类型都是不可变的-就这么简单。是的,所有原始包装器类型都是不可变的1,String也是如此。UUID,URL和URI是其他例子。虽然内置JavaAPI中的Calendar和Date是可变的,但JodaTime中的许多类型是不可变的-在我看来,这是JodaTime更易于使用的一个原因。如果一个对象是不可变的,您可以在代码中的其他位置保留对它的引用,而不必担

java - 所有原始包装类都是不可变对象(immutable对象)吗?

Java中的所有原始包装类都是不可变对象(immutable对象)吗?字符串是不可变的。其他不可变对象(immutable对象)是什么? 最佳答案 任何不给您任何方法来更改其中数据的类型都是不可变的-就这么简单。是的,所有原始包装器类型都是不可变的1,String也是如此。UUID,URL和URI是其他例子。虽然内置JavaAPI中的Calendar和Date是可变的,但JodaTime中的许多类型是不可变的-在我看来,这是JodaTime更易于使用的一个原因。如果一个对象是不可变的,您可以在代码中的其他位置保留对它的引用,而不必担

java - 有没有实现 Iterable 而不实现 Collection 的 Java 标准类?

我有一个难题让我思考是否有任何标准的java类实现了Iterable没有实现Collection.我正在实现一个接口(interface),该接口(interface)需要我定义一个接受Iterable的方法。,但我用来支持此方法的对象需要Collection.这让我做了一些非常笨拙的代码,在编译时会给出一些未经检查的警告。publicImmutableMap>loadAll(Iterablekeys)throwsException{Collection_keys;if(keysinstanceofCollection){_keys=(Collection)keys;}else{_ke

java - 有没有实现 Iterable 而不实现 Collection 的 Java 标准类?

我有一个难题让我思考是否有任何标准的java类实现了Iterable没有实现Collection.我正在实现一个接口(interface),该接口(interface)需要我定义一个接受Iterable的方法。,但我用来支持此方法的对象需要Collection.这让我做了一些非常笨拙的代码,在编译时会给出一些未经检查的警告。publicImmutableMap>loadAll(Iterablekeys)throwsException{Collection_keys;if(keysinstanceofCollection){_keys=(Collection)keys;}else{_ke

java - Collection<?> 和 Collection<T> 有什么区别

我主要是一名C#开发人员,我正在给我的friend教授数据结构,他们在大学里使用Java,我在Java中看到了这样的表达:voidprintCollection(Collectionc){for(Objecte:c){System.out.println(e);}}我在C#中没有见过这样的东西,所以我想知道Java中的Collection和Collection有什么区别?voidprintCollection(Collectionc){for(Objecte:c){System.out.println(e);}}我认为它也可以按照上面的方式编写。文档中的那个人正在比较Collectio

java - Collection<?> 和 Collection<T> 有什么区别

我主要是一名C#开发人员,我正在给我的friend教授数据结构,他们在大学里使用Java,我在Java中看到了这样的表达:voidprintCollection(Collectionc){for(Objecte:c){System.out.println(e);}}我在C#中没有见过这样的东西,所以我想知道Java中的Collection和Collection有什么区别?voidprintCollection(Collectionc){for(Objecte:c){System.out.println(e);}}我认为它也可以按照上面的方式编写。文档中的那个人正在比较Collectio

java - Collections.sort() 声明 : why <? super T> 而不是 <T>

为什么Collections.sort(List)有签名:publicstatic>voidsort(Listlist)而不是:publicstatic>voidsort(Listlist)我了解它们的用途相同;那么为什么框架开发者会使用第一个选项呢?或者这些声明真的不同吗? 最佳答案 您提议的签名可能适用于Java-8。然而,在以前的Java版本中,类型推断并不是那么聪明。假设您有List.请注意java.sql.Date延长java.util.Date实现Comparable.编译时Listlist=newArrayList()

java - Collections.sort() 声明 : why <? super T> 而不是 <T>

为什么Collections.sort(List)有签名:publicstatic>voidsort(Listlist)而不是:publicstatic>voidsort(Listlist)我了解它们的用途相同;那么为什么框架开发者会使用第一个选项呢?或者这些声明真的不同吗? 最佳答案 您提议的签名可能适用于Java-8。然而,在以前的Java版本中,类型推断并不是那么聪明。假设您有List.请注意java.sql.Date延长java.util.Date实现Comparable.编译时Listlist=newArrayList()

java - 如何从 Java 中的 Java 列表创建 scala.collection.immutable.Seq?

我正试图让Akka进入我的Java项目,但我对Scala的Seq类型的一个小问题感到困惑。我能够将我的ActorRef的Java列表转换为scala.collection.Seq,但我尝试使用的AkkaAPI需要scala.collection.immutable.Seq。怎么做?代码:staticclassRouterextendsUntypedLoadBalancer{privatefinalInfiniteIteratorworkers;publicRouter(Listworkers){SeqworkerSeq=asScalaBuffer(workers);//howtoget