java-8相关内容
在 Java 8 中,Stream 有一个方法 reduce: T reduce(T identity, BinaryOperator accumulator); 累加器运算符是否允许修改它的任何一个参数?我认为不是,因为 JavaDoc 说累加器应该是 NonInterfering,尽管所有示例都谈到修改集合,而不是修改集合的元素. 所以,举个具体的例子,如果我们有 integer
..
..
我有一个流,例如: Arrays.stream(new String[]{"matt", "jason", "michael"}); 我想删除以相同字母开头的名称,以便只剩下一个以该字母开头的名称(不管是哪个). 我试图了解 distinct() 方法有效.我在文档中读到它基于对象的“equals"方法.但是,当我尝试包装 String 时,我注意到 equals 方法从未被调用,并且没
..
这个问题不是关于 HashMap 不是线程安全的众所周知和记录的事实,而是关于它在 HotSpot 和 JDK 代码上的特定故障模式.我很惊讶这段代码很容易因 NPE 而失败: public static void main(String[] args) {映射m = new HashMap(0, 0.75f);IntStream.range(0, 5).parallel().
..
我想做以下事情: 列表list = IntStream.range(0, 7).collect(Collectors.toList()); 但在某种程度上,结果列表是 Guava 的 ImmutableList 的实现. 我知道我能做到 列表list = IntStream.range(0, 7).collect(Collectors.toList());列表immutable
..
我想对 seq1 升序和 seq2 降序排序,所以我这样做: list = list.stream().sorted(comparing(AClass::getSeq1).thenComparing(AClass::getSeq2).reversed()).collect(toList()); 但是结果出来是因为 seq1 和 seq2 都是按降序排序的. 我可以这样做让 seq1 升序
..
我正在尝试从 n 维 int 数组中获取 IntStream.有没有很好的 API 方法来做到这一点?我知道两个流的连接方法. 解决方案 假设您想以行优先方式顺序处理数组数组,这应该可以: int[][] arr = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };IntStream 流 = Arrays.stream(arr).flatMapToInt(x ->
..
..
我有一个 List 可以表示(简化)JSON 样式: [ { 代码=欧元,描述=欧元,比率=1 },{ 代码=美元,描述=美元,比率=1.1 } ] 我想像这样在 Map 中转换它: { EUR={ codice=EUR, description=Euro, ratio=1 }, USD={ codice=USD,描述=美元,比率=
..
为了更好地理解新的流 API,我正在尝试转换一些旧代码,但我坚持使用这个. 公共集合asDestSet() {HashMap>map = new HashMap>();//...设置结果 = 新的 HashSet();for (设置 v : map.values()) {结果.addAll(v);}返回结果;} 我似乎无法为其创建有效的收集器:
..
我想展平一个 Map,它将 Integer 键关联到 String 列表,而不会丢失键映射.我很好奇,好像使用 stream 和 lambda 这样做是可能和有用的. 我们从这样的开始: 映射>mapFrom = new HashMap(); 让我们假设 mapFrom 填充在某个地方,看起来像: 1: a,b,c2:d,e,f等等. 我们还假设列表中的值是唯一
..
在 Java 8 中,Collection 接口扩展了两个返回 Stream 的方法:返回顺序流的 stream() 和返回顺序流的 parallelStream(),它返回一个可能并行的流.Stream 本身也有一个 parallel() 方法,该方法返回等效的并行流(将当前流变为并行或创建新流). 重复有明显的缺点: 令人困惑.一个问题询问 是否有必要同时调用 paralle
..
我想用 lambda 缩进实现如下: 多行语句: String[] ppl = new String[] { "Karen (F)", "Kevin (M)", "Lee (M)", "Joan (F)", "Des (M)", "瑞克 (M)" };列表字符串 = Arrays.stream(ppl).筛选((x) ->{返回 x.contains("(M)");}).coll
..
我正在寻找可以制作集合流的方法,但它是 null 安全的.如果collection 为null,则返回空流.像这样: Utils.nullSafeStream(collection).filter(...); 我已经创建了自己的方法: 公共静态流nullSafeStream(集合集合){if (collection == null) {返回 Stream.empty();}返回集
..
..
我有以下类结构 公共类商店{私有长存储ID;私人长masterStoreId;私有字符串操作符标识符;}公共类 StoreInfo {私有字符串操作符标识符;私设slaveStoreIds;公共 StoreInfo(String operatorIdentifier, Set slaveStoreIds) {极好的();this.operatorIdentifier = ope
..
我正在使用 Java 8(内部版本 1.8.0_25)、Netbeans 8.0.2,并且正在将一些 Java 8 功能整合到现有应用程序中.排序和 .forEach 不起作用,所以我创建了一些测试代码以确保我理解 lambda 等并诊断问题.下面是新代码以及与我系统中的数据交互的代码的组合: public void test(Registration reg) {/* 新代码 */列表
..
在 Java Streams 中 - stream.max(Comparator) 和 stream.collect(Collectors.maxBy(Comparator)) 在性能方面有什么区别.两者都将根据传递的比较器获取最大值.如果是这种情况,为什么我们需要使用 collect 方法进行收集的额外步骤?我们什么时候应该选择前者还是后者?适合同时使用两者的用例场景有哪些? 解决方案
..
byte[] a = {1,2,3};System.out.println(Stream.of(a).count());字节[] b = {1,2,3};System.out.println(Stream.of(b).count()); 结果是1和3,为什么? 解决方案 Stream.of 只接受对象作为其参数.byte 不是 Object,但 byte 数组是.如果a是byte的数组
..
我的输入序列是:[1,2,3,4,5] 结果应该是:[1,12,3,14,5] 即偶数加 10,但奇数保持不变. 这是我尝试过的: public static ListincrementEvenNumbers(List 数组){列表温度 =数组.stream().filter(x->x%2==0).map(i -> i+10).collect(Coll
..