Tag: java 8

是否有可能在Java 8中投射stream?

是否有可能在Java 8中投射stream? 说我有一个对象列表,我可以做这样的事情来过滤掉所有的附加对象: Stream.of(objects).filter(c -> c instanceof Client) 在这之后,如果我想和客户做一些事情,我需要把它们中的每一个都投给: Stream.of(objects).filter(c -> c instanceof Client) .map(c -> ((Client) c).getID()).forEach(System.out::println); 这看起来有点难看。 是否有可能将整个stream转换为不同的types? 像将Stream<Object> Stream<Client>转换为Stream<Client> ? 请忽略这样的事实可能意味着不好的devise。 我们在计算机科学课上做这样的东西,所以我正在研究java 8的新特性,并且很好奇这是否可能。

Java 8stream和RxJava可观察对象之间的区别

Java 8stream类似于RxJava observables? Java 8stream的定义: 新的java.util.stream包中的类提供了一个Stream API来支持元素stream上的函数式操作。

如何将Java8stream的元素添加到现有列表中

收集器的Javadoc显示如何将stream的元素收集到新列表中。 有没有一个单线程将结果添加到现有的ArrayList中?

Java 8可选的orElse可选

我一直在使用Java 8中的新的可选types ,并且遇到了一个看起来像一个常见的操作,但是在function上不受支持:“orElseOptional” 考虑以下模式: Optional<Result> resultFromServiceA = serviceA(args); if (resultFromServiceA.isPresent) return result; else { Optional<Result> resultFromServiceB = serviceB(args); if (resultFromServiceB.isPresent) return resultFromServiceB; else return serviceC(args); } 这种模式有很多种forms,但是它归结为想要一个可选的“orElse”,它带有一个产生一个新的可选的函数,只有当前函数不存在时才被调用。 它的实现看起来像这样: public Optional<T> orElse(Supplier<Optional<? extends T>> otherSupplier) { return value != null ? this : other.get(); } 我很好奇,如果有这样的一个方法不存在的原因,如果我只是用一个意想不到的方式使用可选,以及人们提出了什么其他方式来处理这种情况。 我应该说,我认为涉及自定义实用程序类/方法的解决scheme并不优雅,因为使用我的代码的人不一定知道它们存在。 另外,如果有人知道,这个方法是否会包含在JDK 9中,我可以在哪里提出这样一个方法? 这似乎是API的一个非常明显的遗漏给我。

在使用stream生成地图时忽略重复项

Map<String, String> phoneBook=people.stream() .collect(toMap(Person::getName, Person::getAddress)); 重复发生时,我会得到重复键exception。 是否有可能忽略添加值来映射重复发生时? 当有重复时,只需继续忽略该重复键。

什么时候有一个默认方法初始化的接口?

在searchJava语言规范来回答这个问题时 ,我了解到了这一点 在一个类被初始化之前,它的直接超类必须被初始化, 但是这个类实现的接口没有被初始化。 类似地,接口的超级接口在初始化之前不会被初始化。 为了我自己的好奇心,我尝试了它,并且如预期的那样, InterfaceType没有被初始化。 public class Example { public static void main(String[] args) throws Exception { InterfaceType foo = new InterfaceTypeImpl(); foo.method(); } } class InterfaceTypeImpl implements InterfaceType { @Override public void method() { System.out.println("implemented method"); } } class ClassInitializer { static { System.out.println("static initializer"); } } interface InterfaceType { public static […]

Java“在此语言级别不支持的lambdaexpression式”

我正在testingJava 8的一些新特性,并将这个示例复制到我的IDE中(原来是Eclipse,然后是IntelliJ),如下所示: http : //docs.oracle.com/javase/tutorial/java/javaOO/examples/RosterTest。 java的 Eclipse不提供任何lambdaexpression式的支持,IntelliJ不断报告“在这个语言级别不支持Lambdaexpression式”的错误。 我想知道这是否是我的安装,代码或支持的问题。

计算Java 8中两个date之间的天数

我知道有很多关于如何获得的问题,但是我想要和使用新的Java 8 Date api的例子。 我也知道JodaTime库,但我想要一个没有外部库的工作方式。 function需要抱怨这些限制: 防止date保存时间的错误 input是两个date的对象(没有时间,我知道localdatetime,但我需要做的date实例)

Intellij – 无法使用较新的Java 8类 – 错误:“使用API​​logging为@since 1.6+ ..”

我想在我的Java 8代码库中使用java.lang.function.Function ,但我不断收到以下错误在Intellij中。 以@since 1.6+formslogging的API的用法此检查查找文档中具有@since标记的方法的所有用法。 当在新的SDK版本下进行开发作为生产的目标平台时,这可能会很有用 我似乎有正确的项目和编译器设置 项目设置:(文件 – >项目结构) Project Settings -> Project -> Project SDK = Java 1.8 Project Settings -> Project -> Project Language Level = 8 – Lambdas, Type Annotations etc 编译器设置:(文件 – >设置) Build, Execution, Deployment -> Compiler -> Java Compiler -> Project Bytecode Version : 1.8 Build, Execution, Deployment […]

Java 8 – 转换列表的最佳方式:map或foreach?

我有一个列表myListToParse我想过滤的元素和应用每个元素的方法,并将结果添加到另一个列表myFinalList 。 对于Java 8,我注意到我可以用两种不同的方法来完成。 我想知道他们之间更有效的方式,并理解为什么一种方式比另一种更好。 任何有关第三种方式的build议我都会公开。 方法1: myListToParse.stream() .filter(elt -> elt != null) .forEach(elt -> myFinalList.add(doSomething(elt))); 方法2: myFinalList = myListToParse.stream() .filter(elt -> elt != null) .map(elt -> doSomething(elt)) .collect(Collectors.toList());