草庐IT

immutable-collections

全部标签

java - Java 8 中的顺序流在调用 collect 时是否使用组合器参数?

如果我在顺序流上调用collect(例如,通过调用Collection.stream()),那么它会使用我传递给collect的组合器参数吗?我想不是,但我在文档中什么也没看到。如果我是正确的,那么必须提供一些我知道不会被使用的东西(如果我知道它是一个顺序流)似乎很不幸。 最佳答案 记住要根据接口(interface)规范进行开发,而不是根据实现进行开发。下一个Java版本的实现可能会发生变化,而规范应该保持稳定。规范不区分顺序流和并行流。因此,您应该假设可能会使用combiner。实际上,有很好的例子表明用于顺序流的combine

java - 使用谷歌 Collection 过滤和排序列表

假设我有一个列表(或集合):ListtestList=Lists.newArrayList("assocX","srcT","destA","srcX","don'tcareY","garbage","srcB");我想取回一个ImmutableList(Set),它按自然顺序对术语进行排序/分组,其中以“src”开头的术语排在第一位,“assoc”排在第二位,“dest”排在最后。如果一个术语不包含这些,则应将其从结果列表中删除。因此这里的结果是“srcB”、“srcT”、“assocX”、“destA”。我想我可以通过Iterables.filter或Predicates的某种组合

java - 使用谷歌 Collection 过滤和排序列表

假设我有一个列表(或集合):ListtestList=Lists.newArrayList("assocX","srcT","destA","srcX","don'tcareY","garbage","srcB");我想取回一个ImmutableList(Set),它按自然顺序对术语进行排序/分组,其中以“src”开头的术语排在第一位,“assoc”排在第二位,“dest”排在最后。如果一个术语不包含这些,则应将其从结果列表中删除。因此这里的结果是“srcB”、“srcT”、“assocX”、“destA”。我想我可以通过Iterables.filter或Predicates的某种组合

java - Guava 或 Apache Commons Collections 中是否有任何通用版本的 toArray()?

我正在寻找的是Object[]java.util.Collection.toArray()的通用版本或使用T[]java.util的不那么冗长的替代方案。Collection.toArray(T[]数组)。我现在可以写:Collectionstrings;String[]array=strings.toArray(newString[strings.size()]);我正在寻找的是这样的:@SuppressWarnings("unchecked")publicstaticT[]toArray(Collectioncollection,Classclazz){returncollecti

java - Guava 或 Apache Commons Collections 中是否有任何通用版本的 toArray()?

我正在寻找的是Object[]java.util.Collection.toArray()的通用版本或使用T[]java.util的不那么冗长的替代方案。Collection.toArray(T[]数组)。我现在可以写:Collectionstrings;String[]array=strings.toArray(newString[strings.size()]);我正在寻找的是这样的:@SuppressWarnings("unchecked")publicstaticT[]toArray(Collectioncollection,Classclazz){returncollecti

Java如何删除设置了IMMUTABLE位的文件

在我从外部源复制文件的Java8项目中工作。在其中一个源中,文件设置为不可变位标志。在OSX中是这样设置的sudochflagsschg/path/to/file在Linux中chattr+i/path/to/file我现在需要删除已复制的文件。我一直在使用ApacheCommonsIO来删除目录,FileUtils.deleteDirectory(newFile("/path/here"));但是,这会因java.io.IOException异常而崩溃。是否有任何跨平台方式来删除这些文件?正在运行的进程是文件的所有者。 最佳答案

Java如何删除设置了IMMUTABLE位的文件

在我从外部源复制文件的Java8项目中工作。在其中一个源中,文件设置为不可变位标志。在OSX中是这样设置的sudochflagsschg/path/to/file在Linux中chattr+i/path/to/file我现在需要删除已复制的文件。我一直在使用ApacheCommonsIO来删除目录,FileUtils.deleteDirectory(newFile("/path/here"));但是,这会因java.io.IOException异常而崩溃。是否有任何跨平台方式来删除这些文件?正在运行的进程是文件的所有者。 最佳答案

java - Collections.unmodifiableSet() 在 Java 中做了什么?

我可以看到Collections.unmodifiableSet返回给定集合的不可修改View,但我不明白为什么我们不能只使用final修饰符来完成此操作。在我的理解中,final声明了一个常量:不能修改的东西。所以,如果一个集合被声明为一个常量,那么它就不能被修改:不能从集合中删除任何东西,也不能添加任何东西。为什么我们需要Collections.unmodifiableSet? 最佳答案 final声明了一个不能修改的对象引用,例如privatefinalFoosomething=newFoo();创建一个新的Foo并将引用放在

java - Collections.unmodifiableSet() 在 Java 中做了什么?

我可以看到Collections.unmodifiableSet返回给定集合的不可修改View,但我不明白为什么我们不能只使用final修饰符来完成此操作。在我的理解中,final声明了一个常量:不能修改的东西。所以,如果一个集合被声明为一个常量,那么它就不能被修改:不能从集合中删除任何东西,也不能添加任何东西。为什么我们需要Collections.unmodifiableSet? 最佳答案 final声明了一个不能修改的对象引用,例如privatefinalFoosomething=newFoo();创建一个新的Foo并将引用放在

Java Commons Collections removeAll

CollectionUtils::removeAll()CommonsCollections3.2.1我一定要疯了,因为这种方法似乎与文档状态相反:Removestheelementsinremovefromcollection.Thatis,thismethodreturnsacollectioncontainingalltheelementsincthatarenotinremove.这个小小的JUnit测试@TestpublicvoidtestCommonsRemoveAll()throwsException{Stringstr1="foo";Stringstr2="bar";S