我正在使用Files.lines(...)读取一个非常大的(500mb)文件.它读取文件的一部分,但在某些时候它会破坏java.io.UncheckedIOException:java.nio.charset.MalformedInputException:输入长度= 1
我认为该文件具有不同字符集的行.有没有办法跳过这些断线?我知道返回的流是由Reader支持的,读者我知道如何跳过,但不知道如何从流中获取Reader以便按我喜欢的方式设置它.
List<String> lines = new ArrayList<>();
try (Stream<String> stream = Files.lines(Paths.get(getClass().getClassLoader().getResource("bigtest.txt").toURI()), Charset.forName("UTF-8"))) {
stream
.filter(s -> s.substring(0, 2).equalsIgnoreCase("aa"))
.forEach(lines::add);
} catch (final IOException e) {
// catch
}
Run Code Online (Sandbox Code Playgroud) 我正在使用一个简单的循环构建一个对象:
WebTarget target = getClient().target(u);
for (Entry<String, String> queryParam : queryParams.entrySet()) {
target = target.queryParam(queryParam.getKey(), queryParam.getValue());
}
Run Code Online (Sandbox Code Playgroud)
我想使用Java8 Stream API做同样的事情,但我无法弄清楚如何做到这一点.让我挣扎的是每次都重新分配目标,所以简单的.forEach()将不起作用.我想我需要使用.collect()或reduce(),因为我正在寻找单个返回值,但此刻我迷路了!
我想使用Java 8流API转换以下代码
List<Card> deck = new ArrayList<>();
for (Suit s: Suit.values())
{
for (Rank r: Rank.values())
{
deck .add(new Card(r, s));
}
}
Run Code Online (Sandbox Code Playgroud)
我出来了
List<Card> deck = new ArrayList<>();
Arrays.stream(Suit.values())
.forEach(s -> Arrays.stream(Rank.values())
.forEach(r -> deck.add(new Card(r, s))));
Run Code Online (Sandbox Code Playgroud)
但我不喜欢它,因为它在列表中有副作用.
还有另一种优雅的方式,从流生成列表而不是吗?
我一个接一个地遵循了Spring Rest Doc的入门指南,但我无法从生成的片段中获取任何html.
片段在我配置的目录(build/generated-snippets)中生成正常,但我看不到任何html5 /目录,其中包含从片段生成的html文件.
doc 在某些方面说明了如何将文档打包到jar中,很明显它需要一些html5 /目录中的文件,但是在构建运行时不会创建:
dependsOn asciidoctor
from("${asciidoctor.outputDir}/html5") {
into 'static/docs'
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我的项目文件build.gradle:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.3.5.RELEASE'
}
}
plugins {
id 'org.asciidoctor.convert' version '1.5.2'
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'spring-boot'
apply plugin: 'jacoco'
apply plugin: 'war'
sourceCompatibility = 1.8
targetCompatibility = 1.8
ext {
snippetsDir = file('build/generated-snippets')
}
repositories {
mavenCentral()
}
dependencies {
compile 'org.springframework.boot:spring-boot-starter-web:1.3.5.RELEASE'
compile 'org.springframework.boot:spring-boot-starter-logging:1.3.5.RELEASE' …
Run Code Online (Sandbox Code Playgroud) 我有一个相当典型的场景,其中有一个主要的@Entity,并且他内部的所有内容都是可嵌入的(因此没有父级内部的所有内容都没有意义).现在JPA 2.0阻止我将@ElementCollection嵌套在另一个@ElementCollection中定义的@Embeddable中:
JSR-317 2.6可嵌入类和基本类型的集合元素集合中包含的可嵌入类(包括另一个可嵌入类中的可嵌入类)不能包含元素集合,也不能包含与实体之外的实体的关系.多对一或一对一的关系
现在的问题是:这是为什么?一个简单的例子:
@Entity
public class Tournament {
@Id
Long id;
@ElementCollection
@CollectionTable
private List<Edition>;
}
@Embeddable
public class Edition {
@ElementCollection
@CollectionTable
private List<Round>
}
@Embeddable
public class Round {
blabla;
}
Run Code Online (Sandbox Code Playgroud)
这有什么问题?这只是一个例子,您可以将Round和Edition定义为Entity并解决问题,但在我的情况下,出于多种原因,我需要强制执行非嵌套的东西没有他的父级是没有意义的.
为什么JPA 2.0必须阻止我这样做?
java ×5
java-8 ×3
java-stream ×3
api-doc ×1
builder ×1
embeddable ×1
file ×1
for-loop ×1
hibernate ×1
jpa ×1
nested-loops ×1
spring ×1