草庐IT

可变性

全部标签

java - Java 中的 String 对象不是不可变的吗?

这个问题在这里已经有了答案:ImmutabilityofStringsinJava(26个答案)关闭7年前。Strings=...;s=s.substring(1);这可能吗?我认为您不能在Java中更改String对象。

java - 关于使用 ThreadLocals 包装可变单例对象的建议

来自JavaConcurrencyinpractice第3.3.3章。线程本地Thread-localvariablesareoftenusedtopreventsharingindesignsbasedonmutableSingletonsorglobalvariables.如果我们将可变的Singleton人包装在ThreadLocal中,每个线程都会有自己的Singleton副本?那么它将如何保持单例?这是作者的意思还是我在这里遗漏了一些非常明显的东西? 最佳答案 IfwewrapthemutableSingletonguyi

java - 可变数量的嵌套 For 循环

我正在用Java编写单词解读器。现在我有一个程序可以打印从一个有3个或更多字母的单词中选择的3个字母的所有重新排列(无重复)。因此,例如,如果参数是abcd,它将打印:[[abc,abd,acb,acd,adb,adc,bac,bad,bca,bcd,bda,bdc,cab,cad,cba,cbd,cda,cdb,dab,dac,dba,dbc,dca,数据中心]]我正在用排列填充二维数组列表。现在,二维数组内部只有一个数组,其中包含3个字母的排列。我希望二维数组具有用于排列1个字母、2个字母、3个字母等的数组,并在单词的长度处停止。问题是我需要可变数量的嵌套for循环来完成此操作。对

java - 为什么在使用带有原始类型和包装类的可变参数重载时会出现不明确的错误?

这个问题在这里已经有了答案:Ambiguousvarargsmethods(4个答案)关闭6年前。我不明白为什么在案例1中,它没有给出编译错误,相反在案例2(可变参数)中,它给出了编译错误。谁能详细说明编译器在这两种情况下有什么区别?我浏览了很多关于它的帖子,但还无法理解。案例#1publicclassTest{publicvoiddisplay(inta){System.out.println("1");}publicvoiddisplay(Integera){System.out.println("2");}publicstaticvoidmain(String[]args){ne

java - 从具有可变键的表中查找值

有一张table:key由3个后缀组成:区域+s1+s2region,比如US总是指定的,但其他的可以不指定,所以*将用于“all”。例如:对于key="US_A_U"value=2,因为:尝试查找完全匹配项:在表中查找键("US_A_U")-不是发现少一步严格查找:查找键("US_A_*")-找到==2对于key="US_Q_Q"value=3,因为:尝试查找完全匹配项:在表中查找键("US_Q_Q")-不是发现少一步严格查找:查找键("US_Q_*")-未找到查找键(“US_*_Q”)-未找到少一步严格查找:查找键("US_*_*")-found=3对于key="US_O_P"va

java - 在将 java 转换的 List 迭代为不可变时使用 scala 并行性

我正在尝试使用Scala并行性来加快执行时间。因此,要将javaArrayList转换为不可变数组,我使用:varimList=scala.collection.JavaConversions.asScalaBuffer(normalQLFolderList)然后在迭代时利用多个内核,我使用:for(i我是否以正确的方式利用Scala并行性?在这种情况下迭代一个列表。asScalaBuffer是否有很大的性能影响? 最佳答案 可以在恒定时间内转换为并行副本的集合包括可变和不可变HashMap和哈希集、范围、vector和数组。对于所

java - 具有对象和原始类型的模糊可变参数方法

考虑以下两组方法。第一个被接受,第二个被拒绝为模棱两可。唯一的区别是使用int和Integer。是否特别需要拒绝第二个?这意味着在拳击(这将导致第一盘)之后接受它有问题。我在这里想念什么?在我看来,Java编译器在这里限制太多。第1组:publicvoidtest(Object...values){}publicvoidtest(Integerx,Object...values){}//differenceherepublicvoidb(){test(1,"y");//accepted}第2组:publicvoidtest(Object...values){}publicvoidtes

java - 如何为可变数量的路径参数编写单个 JAX-RS 资源

我一直在使用ApacheWink编写基于JAX-RS的ReST应用程序,并且我了解路径参数与资源句柄类之间关联的概念。在这里我看到,我们可以使用@Path注释和相应的资源来定义路径,这些资源将基于HTTP方法被调用..现在我正在寻找类似资源的东西,应该为可变数量的路径参数调用它。例如我希望我的单个资源类CollegeResource应该为/rest/college、/rest/college/subject、/rest/college/subject/teachers、这样的URI调用,它可以达到任意数量的路径参数。如果我之前知道路径参数的数量,那么我可以使用类似/rest/colle

java - 不可变对象(immutable对象)不会使用带有模块的 Java 9 生成代码

使用immutables-library在我将module-info.java添加到项目之前,Java9可以正常工作,将不再生成Immutables*.java。我按照IntelliJ的建议在模块信息中添加“需要值”。我缺少什么,是immutables-library问题还是我需要设置的其他内容,以便javac找到注释处理。我正在使用Maven,maven-compiler-plugin:3.7.0配置为target/source=9。 最佳答案 您遇到的问题是您没有将Immutable部分配置为注解处理器,应该这样做:4.0.0e

java - 我应该在 Java 8 Streams 中使用共享可变变量更新吗

只需在列表下方迭代并通过Java8流添加到另一个共享可变列表中。Listlist1=Arrays.asList("A1","A2","A3","A4","A5","A6","A7","A8","B1","B2","B3");Listlist2=newArrayList();Consumerc=t->list2.add(t.startsWith("A")?t:"EMPTY");list1.stream().forEach(c);list1.parallelStream().forEach(c);list1.forEach(c);以上三个迭代之间有什么区别以及我们需要使用哪一个。有什么注意