标签: java-8

如何使用流来获取运行计数?

我上课了

class Person {
    String name;
    ....
    Optional<Integer> children;
}
Run Code Online (Sandbox Code Playgroud)

如何使用流来获取所有孩子的总数?

public int totalCount(final Set<Person> people) {
    int total = 0;
    for (Person person : people) {
        if (person.getChildren().isPresent()) {
            total += person.getChildren().get();
        }
    }
    return total; 
}
Run Code Online (Sandbox Code Playgroud)

如何使用Java 8流做到这一点?

public int totalCount(final Set<Person> people) {
    int total = 0;
    people.stream()
          .filter(p -> p.getChildren().isPresent())
          // ???
}
Run Code Online (Sandbox Code Playgroud)

java-8 java-stream

2
推荐指数
1
解决办法
850
查看次数

Java 8 - 无法在数组类型Enum []上调用stream()

为什么我不能调用stream()数组类型Enum

DummyEnum[] array = DummyEnum.values();
array.stream(); // Compile Error
Run Code Online (Sandbox Code Playgroud)

ENUM:

public enum DummyEnum {
    Hello("Hello"), Welcome("Welcome");
    private String greeting;

    private DummyEnum(final String greeting) {
        this.greeting = greeting;
    }

    public String getValue() {
        return greeting;
    }
}
Run Code Online (Sandbox Code Playgroud)

java enums java-8

2
推荐指数
1
解决办法
1296
查看次数

如何将CSV文件转换为List <Map <String,String >>

我有一个CSV文件,第一行有一个标题.我想将其转换为List<Map<String, String>>,其中Map<String, String>列表中的每个代表文件中的记录.地图的关键是标题,值是字段的实际值.到目前为止我所拥有的:

BufferedReader br = <handle to file>;
// Get the headers to build the map.
String[] headers = br.lines().limit(1).collect(Collectors.toArray(size -> new String[size]));
Stream<String> recordStream = br.lines().skip(1);
Run Code Online (Sandbox Code Playgroud)

我可以执行哪些进一步操作recordStream以便将其转换为List<Map<String, String>>

示例CSV文件是:

header1,header2,header3   ---- Header line
field11,field12,field13   ----> need to transform to Map where entry would be like header1:field11 header2:field12 and so on.
field21,field22,field23
field31,field32,field33
Run Code Online (Sandbox Code Playgroud)

最后,需要将所有这些地图收集到列表中.

java java-8 java-stream

2
推荐指数
1
解决办法
2183
查看次数

从索引创建子列表

是否可以仅使用元素索引从另一个列表创建子列表?我正在寻找一个很好的解决方案,例如lambdas,来自Java 8的流.

例如(伪代码):

a = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
b = a.getByIndices([0, 2, 4, 5, 3])
print(b) // [10, 8, 6, 5, 7]
Run Code Online (Sandbox Code Playgroud)

java list sublist java-8 java-stream

2
推荐指数
2
解决办法
472
查看次数

"plusDays"不会在Java 8中推进LocalDate

LocalDate即使运行期间没有错误,为什么不改变?

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate date = LocalDate.parse("2005-12-12", formatter);
date.plusDays(3);
System.out.println(date.toString());
Run Code Online (Sandbox Code Playgroud)

输出:

2005-12-12
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

java java-8 java-time

2
推荐指数
1
解决办法
1138
查看次数

使用java.net.URL在java中构造错误的URL?

使用oracle java 1.8.0_25

我有以下结构

URL url = new URL(new URL(new URL("http://localhost:4567/"), "123"), "asd")
Run Code Online (Sandbox Code Playgroud)

根据https://docs.oracle.com/javase/tutorial/networking/urls/creatingUrls.html中的文档,
它应该生成http://localhost:4567/123/asd
但是它产生的URLhttp://localhost:4567/asd

文件说明

此代码段使用URL构造函数,该构造函数允许您从另一个URL对象(基础)和相对URL规范创建URL对象.这个构造函数的一般形式是:

URL(URL baseURL, String relativeURL)
第一个参数是一个URL对象,它指定新URL的基础.第二个参数是一个String,它指定相对于base的资源名称的其余部分.如果baseURL为null,则此构造函数将relativeURL视为绝对URL规范.相反,如果relativeURL是绝对URL规范,则构造函数会忽略baseURL.

这是正确的行为吗?

java url construction java-8

2
推荐指数
1
解决办法
500
查看次数

如何使用Java 8编号项?

有一个清单.

List<String> items = new ArrayList<>();
items.add("abcd");
items.add("efgh");
items.add("ijkl");
items.add("mnop");
Run Code Online (Sandbox Code Playgroud)

我想在控制台中打印编号

1. abcd
2. efgh
3. ijkl
4. mnop
Run Code Online (Sandbox Code Playgroud)

我是Java 8的初学者.我正在尝试使用java 8的几个技巧.请帮忙.

java java-8

2
推荐指数
1
解决办法
73
查看次数

Arch Linux上的Intellij Idea 14出现灰屏

我试图在装有Arch Linux的Macbook上运行Intellij Idea 14。我已经安装了Idea和从AUR安装的Oracle JDK8。

当我运行idea.sh时,将显示初始屏幕,并在完成加载后打开此屏幕

这是idea.log:

2015-10-29 17:02:33,298 [      0]   INFO -        #com.intellij.idea.Main - ------------------------------------------------------ IDE STARTED ------------------------------------------------------ 
2015-10-29 17:02:33,312 [     14]   INFO -        #com.intellij.idea.Main - IDE: IntelliJ IDEA (build #IC-141.2735.5, 22 Sep 2015 00:00) 
2015-10-29 17:02:33,312 [     14]   INFO -        #com.intellij.idea.Main - OS: Linux (4.2.3-1-arch, amd64) 
2015-10-29 17:02:33,312 [     14]   INFO -        #com.intellij.idea.Main - JRE: 1.8.0_66-b17 (Oracle Corporation) 
2015-10-29 17:02:33,312 [     14]   INFO -        #com.intellij.idea.Main - JVM: 25.66-b17 (Java HotSpot(TM) 64-Bit Server VM) 
2015-10-29 17:02:33,314 [ …
Run Code Online (Sandbox Code Playgroud)

linux intellij-idea archlinux java-8 intellij-14

2
推荐指数
1
解决办法
1824
查看次数

Java 8加法或减法取决于偶数奇数

假设我有一个int列表

1,2,3,4,5,6,7,8,9,10
Run Code Online (Sandbox Code Playgroud)

如果数字是偶数,如何添加,如果数字是奇数,如何减去?我可以使用for循环执行此操作,但我想知道如何使用stream和Java等新的Java 8功能filter

java java-8

2
推荐指数
1
解决办法
1586
查看次数

Collectors.toMap的默认返回值

如果我们成像,我们有一个名为person的对象,而人看起来像下面这样:

class Person {
    int id;
    String name;
    String country
    // ...
    // getter/setter
}
Run Code Online (Sandbox Code Playgroud)

我们有一个ListPerson对象,我们要"转换"到一个地图.我们可以使用以下内容:

Map<Long, List<Person>> collect = personList.stream().
    collect(Collectors.toMap(Person::getId, p -> p));
Run Code Online (Sandbox Code Playgroud)

但是可以返回valuemapper的默认值并更改valuemapper的类型?

我想过这样的事情:

Map<Long, List<Person>> collect = 
     personList.stream().collect(Collectors.groupingBy(Person::getId, 0));
Run Code Online (Sandbox Code Playgroud)

但有了这个我得到以下错误 is not applicable for the arguments

我有一个解决方法,但我认为它不是很漂亮.

Map<Long, Object> collect2 = personList.stream().
    collect(Collectors.toMap(Person::getId, pe -> {
            return 0;
    }));
Run Code Online (Sandbox Code Playgroud)

java lambda dictionary java-8 collectors

2
推荐指数
1
解决办法
772
查看次数