我已经并行安装了 Java 7 Update 45 和 Java 8 Update 25。我在 JavaFX 中遇到了一些文本渲染问题,这些问题应该在 Java 8 Update 25 中修复,所以我想知道应用程序当前使用的是哪个 Java 版本。
有没有办法检查应用程序使用哪个版本的 Java?
我尝试过的:
如何使用 Java 8 Lambdas 执行此操作:
Optional<String> code;
if (accountType.requiresCode() && (!code.isPresent() || empty(code.get()))) {
new IllegalArgumentException("Account type " + accountType + " requires code");
}
Run Code Online (Sandbox Code Playgroud) 我正在对 java 8 流功能进行一些练习,因此想到将知识应用于将数字字符串转换为整数列表的问题
一个典型的测试看起来像
@Test
public void testGetListofIntegersFromString(){
List<Integer> result = getIntegers("123456780");
assertEquals(Arrays.asList(1,2,3,4,5,6,7,8,0),result);
}
Run Code Online (Sandbox Code Playgroud)
我写了下面的方法
List<Integer> getIntegers(String value) {
return IntStream.rangeClosed(0, value.length() - 1).map(i -> Integer.valueOf(value.substring(i,i+1))).collect(?????);
}
Run Code Online (Sandbox Code Playgroud)
我被困在使用哪个函数来获取我尝试过的整数列表collect(Collectors.toList())它给出了编译错误。
请建议我们是否可以按照不同的方法来解决这个问题。
我正在运行一个突然停止工作的 spring boot 应用程序我不得不升级到不同的笔记本电脑,当我安装软件时 - 突然间我的服务器无法启动
当我尝试在 eclipse 中的 tomcat 服务器上运行我的代码时,我得到的错误如下
java.lang.ClassCircularityError: java/util/logging/LogRecord
at org.slf4j.bridge.SLF4JBridgeHandler.getSLF4JLogger(SLF4JBridgeHandler.java:198)
at org.slf4j.bridge.SLF4JBridgeHandler.publish(SLF4JBridgeHandler.java:287)
at java.util.logging.Logger.log(Logger.java:738)
at java.util.logging.Logger.doLog(Logger.java:765)
at java.util.logging.Logger.logp(Logger.java:930)
at org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:180)
at org.apache.juli.logging.DirectJDKLog.debug(DirectJDKLog.java:103)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:369)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
at org.apache.catalina.startup.Catalina.start(Catalina.java:625)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)
Run Code Online (Sandbox Code Playgroud)
我正在使用 Eclipse Mars (4.5)、Java jdk1.8.0_51 和 Tomcat 8 apache-tomcat-8.0.24(与 apache-tomcat-8.0.23 相同的错误)
有没有人对我可以尝试解决这个问题有什么建议?
如果我运行我的 maven 目标来生成 war 文件并直接部署到 tomcat,则不会发生此问题 - 只有当我尝试从 eclipse 中运行我的服务器时才会发生
只是指出 - 当我使用 Java 7 版本 79 时,这一切都完美无缺,但想让它与 Java 8 一起使用
查看 Java8 doc for OptionalInt,似乎OptionalInt无法通过设置新值或清空现有值来重用。此外,JavaDoc 仅展示了通过调用静态方法来初始化 OptionalInt 的两种方法 - 看起来像一个不可变的对象。
真的不能重复使用吗?
想象一个批处理,其中要处理的数据由一个 int 原语组成,它可以是可选的。对于每一行(假设是数百万行)OptionalInt,必须创建一个新对象。目标是避免不必要的对象实例化和额外的垃圾收集。所以我宁愿自己重新实现它并避免使用 Java8 实用程序类OptionalInt?
如何String从Optional<String>usingifPresent和 avoid返回值NullPointerException?
例子:
public String longestName() {
Optional<String> longName = someList.stream().reduce((name1, name2) -> name1.length() > name2.length() ? name1 : name2);
// If I do not want to use following
// return longName.isPresent() ? longName.get() : "not present";
// Can I achieve this using longName.ifPresent or longName.orElse("not present");
}
Run Code Online (Sandbox Code Playgroud) 在Java 8中,如何从列表转换为映射的形式empID来自类内部和作为对象本身的值。
List<CompanyEntity> result =
ifEntityManager.createNamedQuery("findByEmployeeId", CompanyEntity.class)
.getResultList();
Map<String, CompanyEntity> result1 = result.stream()
.collect(Collectors.toMap(CompanyEntity::getEmployeeId, CompanyEntity::this)); ??
Run Code Online (Sandbox Code Playgroud)
我想要第二个参数toMap作为对象本身。有人可以建议如何实现相同目标吗?
我尝试这样做,Collectors.toMap(CompanyEntity::getEmployeeId, this)但无法摆脱编译错误。
我内部ArrayList有一个有限数量的对象。我想在列表中查找字段中的特定值,然后进行更改。
我有以下实现。
String searchName = searchedName; //from outside we provide this
Person person = personList.stream()
.filter(personList -> searchName.equals(personList.getName()))
.findFirst()
.orElse(null);
if (person != null){
person.setName(replacement);
}
Run Code Online (Sandbox Code Playgroud)
这段代码可以工作,但是流不是我的专长,我的问题是:我是否可以具有相同的行为,而不必付出额外的代价呢?我觉得“如果”是多余的东西,我想使我的代码更有效。
附带的问题是,如果我们有多个具有相同名称的条目,则有一种使用流的方法,因此,除了“ .findFirst().orElse(null)”之外,我还可以使用哪种方法将其存储在person对象或可能的new对象中对象数组。
我有Integres列表,并希望从列表到地图获取最小值,最大值和平均值。下面是我的代码,
List<Integer> numbers = Arrays.asList(-2, 1, 2, 3, 5, 6, 7, 8, 9, 10, 100);
int min = numbers.stream().mapToInt(n -> n).min().getAsInt();
int max = numbers.stream().mapToInt(n->n).max().getAsInt();
double avg = numbers.stream().mapToInt(n->n).average().getAsDouble();
Map<String, Number> result = new HashMap<>();
result.put(“min”, min);
result.put(“max”, max);
result.put(“avg”, avg);
Run Code Online (Sandbox Code Playgroud)
但是我想要在Stream迭代中得到它,
numbers.stream().mapToInt(n->n).collect(toMap/* Map with min, max and average*/ ));
Run Code Online (Sandbox Code Playgroud)
有什么办法可以做到这一点?