java-8 相关问题

将此标记用于特定于Java 8的问题,Java 8是2014年3月18日发布的Java平台的版本8(内部编号1.8)。在大多数情况下,您还应指定java标记。

制作接口功能性接口的可行性

我有这个界面 公共接口复制数据{ 无效复制(T 数据); } 我有实现这个接口的类 公共类 CopyDataImpl 实现 CopyDa...

回答 1 投票 0

org.openqa.selenium.WebDriverException:无法连接到端口 7055 上的二进制 FirefoxBinary(/bin/firefox)

在 jenkins 中运行机器人测试用例时,以下是我们在 CI jenkins 中运行构建后遇到的测试用例错误: org.openqa.selenium.WebDriverException:无法c...

回答 1 投票 0

如何在java中使用Comparator.comparing通过链接对象键进行比较之前检查null

Comparator.comparing(ProjectVo::getCategory, Comparator.comparing(ProjectCategoryVo::getName)) 但是类别可以为空,因此在排序时会抛出异常 我如何申请 null

回答 1 投票 0

使用 Stream 和 java8 以一个字符串返回工资的最小值、最大值、平均值、总和、计数

我有一个以工资为特征的员工列表。 为什么这段代码不起作用? 字符串连接=employees.stream().collect( Collectors.summingInt(Employee::getSalary), 收集...

回答 3 投票 0

确定对话框标题的字体大小

在某些情况下,我的 JDialog 的标题太长,无法容纳在标题栏中。因此,对话框的首选大小是根据标题的长度设置的。 我使用了接受的答案...

回答 1 投票 0

检查可选值是否相等的便捷方法

我正在寻找一种更方便的方法来证明可选值的相等性。 这是 Oracle 博客文章的建议: 可选 也许USB = ...; 也许USB.filter(usb -> "3.0&...

回答 4 投票 0

迁移 Jersey 项目以使用 Java 17 会导致 jersey.repackaged.org.objectweb.asm.ClassReader 处出现 java.lang.IllegalArgumentException。<init>

我正在将我的基于maven的java项目从jdk8迁移到jdk17。现在我面临以下错误: 线程“main”中的异常 java.lang.IllegalArgumentException 在球衣.重新包装....

回答 1 投票 0

如何获取 lambda 产生的方法的名称

从简单的角度来看,lambda 表达式被编译为静态方法,因为它们不捕获 this(即不访问实例成员)。 公开课应用程序{ 公共静态无效foo(...

回答 2 投票 0

Java 流 - 处理多个 for 循环和多个 if 和 else 条件

使用Java流可以实现这个需求吗? 例如:我有一个国家/地区列表。我想迭代 for 循环,对于每个国家,我想调用一个方法来获取所有 st...

回答 1 投票 0

IdeaUIDesigner 中的 Lambda 表达式和 Java 1.8

我正在尝试使用带有 lambda 表达式的 Java 1.8 和 Idea UI Designer,我在 Maven 中有: org.codehaus.mojo ideauidesigner-...

回答 4 投票 0

早期版本的HashMap死循环bug是什么?

我一直在阅读https://www.alibabacloud.com/blog/the-clever-design-of-java-map_597979了解HashMap和CHM的内部实现。 有一句有趣的台词我无法...

回答 1 投票 0

从 Spring 2 迁移到 Spring 5 时出现编译错误:不兼容的类型:java.lang.Object[] 无法转换为 java.lang.Class

我们正在从 Spring 2.5.6 迁移到 Spring 5.3.29,我们需要升级一些代码部分,如下所示: 包aaa.bbb.ccc.util.buscador; 导入aaa.bbb.ccc.dto.SBFormDto; 导入 aaa.bbb.ccc...

回答 1 投票 0

Java流过滤特定索引的项目

我正在寻找一种简洁的方法来过滤列表中特定索引处的项目。我的示例输入如下所示: 列表 原始列表 = Arrays.asList(0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6...

回答 4 投票 0

CoreJava 第一卷第 11 版 - Lambda 表达式。无法理解作者描述函数文字(类型)的内容

我正在阅读 CoreJava 关于 Lambda 表达式的章节,但我无法理解下面的段落。 事实上,转换为函数式接口是你唯一能做的事情 使用 lambda 表达式...

回答 1 投票 0

Java 8 Lambda Collectors.summingLong 多个列?

我的 POJO 定义如下: 类员工详细信息{ 私有字符串部门名称; 私人双薪; 私人双倍奖金; ... } 目前,我有 Group By 'deptNam 的 lambda 表达式...

回答 4 投票 0

Java 流。对对象流中的两个字段求和

我有这样的事情: 整数totalIncome = carDealer.getBrands().stream().mapToInt(brand -> Brand.getManufacturer().getIncome()).sum(); 整数totalOutcome = carDealer.getBrands().strea...

回答 3 投票 0

java 6 使用实体/pojo 类按组计算元素总数

我有一个列表,位于列表值2中。 sdc-position-svc,SnakeYAML,2.1,OverDue sdc-event- Generation-svc,SpringBoot,2.1.2.Release,过期 sdc-事件订阅-svc,Apache Tomcat,9.0.70,...

回答 1 投票 0

以与其余不同的方式映射流的第一个元素

Java 的 Stream API 中是否有一种方法可以以不同于其他方式映射流的第一个元素? 此代码的等效项: List barList = new ArrayList<>(); 对于 (int i=0; i Java 的 Stream API 中是否有一种方法可以与其他元素不同地映射流的第一个元素? 此代码的等效项: List<Bar> barList = new ArrayList<>(); for (int i=0; i<fooList.size(); i++) { Foo foo = fooList.get(i); Foo modifiedFoo = foo.getModifiedFoo(); if (i == 0) { barList.add(new Bar(modifiedFoo, false)); }else { barList.add(new Bar(modifiedFoo, true)); } } Stream<Bar> = barList.stream(); 注意:我已经有一个流设置,我想在第一次映射后进行一些操作 fooList.stream() .map(Foo::getModifiedFoo) .(May be Some operation here to get different new Bar for first modifiedFoo) .map(modifiedFoo -> new Bar(modifiedFoo, true)); 我将获取第一个元素,从中创建一个 Stream 并应用所需的映射。然后,我将获取列表的其余部分,从中创建一个流并应用不同的映射。然后concat流。像这样的东西: Stream<Bar> first = Stream.of(fooList.get(0)) .map(Foo::getModifiedFoo) .map(modifiedFoo -> new Bar(modifiedFoo, false)); Stream<Bar> others = fooList.subList(1, fooList.size()).stream() .map(Foo::getModifiedFoo) .map(modifiedFoo -> new Bar(modifiedFoo, true)); Stream<Bar> bars = Stream.concat(first, others).flatMap(s -> s); 另一种方法: Stream<Bar> bars = IntStream.range(0, fooList.size()) .mapToObj(i -> new Bar(fooList.get(i).getModifiedFoo(), i > 0)); 这种方式很简洁,而且效果很好。 使用 IntStream 迭代索引,然后使用 mapToObj 为该索引创建一个对象,最后收集到一个列表中: List<Bar> barList = IntStream.range(0, fooList.size()) .mapToObj(i -> (i == 0 ? new Bar (fooList.get(i), false) : new Bar(fooList.get(i),true))) .collect(Collectors.toList()); 不过,更具可读性的是,在循环外进行第一项处理,并使用从 1 开始的 IntStream。 这是一个使用简单列表的演示。 我可以提出两种方法,但我发现你的方法更直接。 与 IntStream 例如: List<Bar> barList = new ArrayList<>(); IntStream.range(0, fooList.size()) .forEach(i->{ if (i == 0) { barList.add(new Bar(foo, false)); }else { barList.add(new Bar(foo, true)); } } ); 这不是一个真正的函数式方法(forEach()使用并且没有Collector),因为它维护列表的当前索引。 作为替代方案,您可以使用更实用的方法,但我也不认为它更直接: List<Bar> barList = IntStream.range(0, fooList.size()) .mapToObj(i->{ Foo foo = fooList.get(i); if (i == 0) { return new Bar(foo, false); } return new Bar(foo, true)); }) .collect(Collectors.toList()); 虽然我认为接受的答案更好,但这里有另一种方法。 int[] counter = {-1}; Stream<Bar> barListStream = fooList.stream().map(foo -> { counter[0]++; return new Bar(mfoo.getModifiedFoo(), counter[0]>0); }).collect(Collectors.toList()).stream(); 使用初始设置为 true 的 AtomicBoolean 来确定第一项何时出现。 final AtomicBoolean first = new AtomicBoolean(true); System.out.println("** Print all numbers 1..10"); IntStream.range(1, 11).forEach(number -> { System.out.print((first.get() ? "" : ",") + number); first.set(false); }); System.out.println(); 您可以使用一个物体来持有旗帜,例如AtomicBoolean 或 AtomicInteger - 您可以在第一次或第 n 次迭代时重置(您需要像 AtomicInteger 或某些 Integer 持有者这样的东西才能在第 n 次迭代时重置),例如以下代码使用 HashMap 作为持有者类 - 将以不同于其他行的方式打印流的第一行: Map<String, Boolean> firstTime = new HashMap<>(Map.of("firstTime", true)); // to make the map modifiable try (Stream<String> lines = Files.lines(Paths.get(filename), Charset.defaultCharset())) { lines.forEachOrdered(line -> System.out.println(firstTime.remove("firstTime") != null ? ("firstTime: " + line) : line)); } 也许是这样的: Stream<Bar> barStream = barList.stream(); List<Bar> bars = barStream.skip(1) .map(modifiedFoo -> new Bar(modifiedFoo, false)) .collect(Collectors.toList()); barStream.findFirst() .map(modifiedFoo -> new Bar(modifiedFoo, true)) .ifPresent(bars::add);

回答 7 投票 0

hierynomus smbj 写入 - 共享文件访问被拒绝问题

使用 smbj 将文件写入共享文件夹,下面的代码给我带来了访问被拒绝的问题。但我已经在“网络位置”下安装了相同的共享文件夹,我可以将文件写入

回答 2 投票 0

Android Studio 中“系统找不到指定的文件”

我试图在我的 Android Studio 中运行 Kotlin 程序。 我创建了一个项目。该应用程序构建并运行完美,但是当我尝试创建单独的 .kt 文件并运行它时,它显示错误 - ...

回答 0 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.