标签: java-8

Ubuntu:未安装Oracle JDK 8

我手动在ubuntu 14.04上安装了oracle JDK-8.但每当我想安装一个需要jdk8的软件包时,apt-get会再次尝试安装jdk 8.我的国家是受限制的,所以oracle服务器不允许我下载jdk8.

$java -version

java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)

apt-get的结果是:

download failed
Oracle JDK 8 is NOT installed.
dpkg: error processing package oracle-java8-installer (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 oracle-java8-installer
E: Sub-process /usr/bin/dpkg returned an error code (1)
Run Code Online (Sandbox Code Playgroud)

如果出现此错误,apt-get将无法完成安装.

java ubuntu apt-get java-8

15
推荐指数
3
解决办法
4万
查看次数

将LocalTime(Java 8)转换为Date

我正在尝试将java.time.LocalTime对象转换为java.util.Date但无法找到任何合适的方法.这样做的正确方法是什么?

有没有什么理由为什么java似乎没有内置的直接转换方法?

可能的重复:
如何转换joda时间 - 对我不起作用,可能我错过了一些"joda"库?
如何将Date转换为LocalTime? - 这反过来解决转换问题.

java date java-8 java-time

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

获取Java 8中的当前时间

我正在探索Java 8的新java.time API.我特别想检索当前时间(我当前的时区,不同的时区和不同的偏移量).

代码是:

public static void getCurrentLocalTime(){
    LocalTime time = LocalTime.now();
    System.out.println("Local Time Zone: "+ZoneId.systemDefault().toString());
    System.out.println("Current local time : " + time);
}

public static void getCurrentTimeWithTimeZone(){
    LocalDateTime localtDateAndTime = LocalDateTime.now();
    ZoneId zoneId = ZoneId.of("America/Los_Angeles");
    ZonedDateTime dateAndTimeInLA  = ZonedDateTime.of(localtDateAndTime, zoneId);
    String currentTimewithTimeZone =dateAndTimeInLA.getHour()+":"+dateAndTimeInLA.getMinute();
    System.out.println("Current time in Los Angeles: " + currentTimewithTimeZone);
}

public static void getCurrentTimeWithZoneOffset(){
    LocalTime localtTime = LocalTime.now();
    ZoneOffset offset = ZoneOffset.of("-08:00");
    OffsetTime  offsetTime  = OffsetTime.of(localtTime, offset);
    String currentTimewithZoneOffset =offsetTime.getHour()+":"+offsetTime.getMinute();
    System.out.println("Current time  with offset -08:00: " + …
Run Code Online (Sandbox Code Playgroud)

java java-8 java-time

15
推荐指数
3
解决办法
2万
查看次数

是否有一种方便的方法来创建一个测试字段是否等于给定值的谓词?

我经常发现自己需要过滤Stream或使用谓词来检查给定字段是否具有给定值.

比方说我有这个POJO:

public class A {
    private Integer field;

    public A(final Integer field) {
        this.field = field;
    }

    public Integer getField() {
        return field;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想Stream根据以下值来过滤一个对象field:

    final Integer someValue = 42;
    Stream.of(new A(42), new A(1729), new A(42), new A(87539319), new A(null))
            .filter(a -> Objects.equals(a.getField(), someValue))
            ...
Run Code Online (Sandbox Code Playgroud)

是否有方便的方法来生成方法的谓词filter?我注意到Predicate.isEqual它有但不适合需要.

我可以很容易地写一个这样的:

public static <T,R> Predicate<T> isEqual(Function<? super T, ? extends R> f, R value) {
    return v -> Objects.equals(value, f.apply(v));
}
Run Code Online (Sandbox Code Playgroud)

并将其用作: …

java functional-programming predicate java-8

15
推荐指数
1
解决办法
6052
查看次数

Java Stream API - 计算嵌套列表的项目

让我们假设我们有一个国家列表:List<Country>每个国家都有一个区域列表的参考:( List<Region> 例如美国的州).像这样的东西:

USA
  Alabama
  Alaska
  Arizona
  ...

Germany
  Baden-Württemberg
  Bavaria
  Brandenburg
  ...
Run Code Online (Sandbox Code Playgroud)

在"普通的"Java中,我们可以计算所有区域,例如:

List<Country> countries = ...
int regionsCount = 0;

for (Country country : countries) {
    if (country.getRegions() != null) {
        regionsCount += country.getRegions().size();
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有可能通过Java 8 Stream API实现相同的目标?我想到了类似的东西,但我不知道如何使用count()流API的方法计算嵌套列表的项目:

countries.stream().filter(country -> country.getRegions() != null).???
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

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

Java 8中的并行性

我试图使用新的并行功能JDK8,但不幸的是,我无法让它工作.NetBeans 7.1表示不存在"并行"方法.

这种方法需要特殊导入吗?有没有人有示例代码演示Java 8并行性?

java parallel-processing java-8

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

Java 8 Lambdas:将Stream映射到Integer类型然后调用sum()将无法编译

我正在玩Java8 lambda表达式.作为一个例子,我然后尝试总结列表中包含的年龄:

import java.util.Arrays;
import java.util.List;

public class Person {
    public static void main(String[] args) {
        List<Person> persons = Arrays.asList(new Person("FooBar", 12), new Person("BarFoo", 16));
        Integer sumOfAges = persons.stream().map(Person::getAge).sum();
        System.out.println("summedUpAges: " + sumOfAges);
    }

    private final String name;
    private final Integer age;

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public Integer getAge() {
        return age;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用以下java编译器编译此代码段时:

openjdk version "1.8.0-ea"
OpenJDK Runtime Environment (build 1.8.0-ea-lambda-night
OpenJDK …
Run Code Online (Sandbox Code Playgroud)

java collections lambda java-8

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

Java 8:使用lambda表达式初始化HashMap

我正在尝试一次声明和定义更大的哈希映射.我是这样做的:

public HashMap<Integer, Callable<String>> opcode_only = new HashMap<Integer, Callable<String>>() {{
    put(x, y);
    put(x, y);
}};
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在体内使用lambda表达式时put,我正在进行eclipse warrning/error.这就是我在HashMap中使用lambda的方法:

public HashMap<Integer, Callable<String>> opcode_only = new HashMap<Integer, Callable<String>>() {{
    put(0, () -> { return "nop"; });
    put(1, () -> { return "nothing...."; });
}};
Run Code Online (Sandbox Code Playgroud)

Eclipse以逗号开头强调lambda的整个部分.错误消息:

Syntax error on token ",", Name expected    
Syntax error on tokens, Expression expected instead
Run Code Online (Sandbox Code Playgroud)

有人知道我做错了什么吗?是否允许通过lambda表达式初始化HashMap?请帮忙.

java collections lambda hashmap java-8

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

在Java 8默认接口方法上使用Spring @Transactional注释是否安全?

Spring文档建议不要在接口方法上放置@Transactional注释,因为接口注释不是由类继承的.但是,使用Java 8,我们可以在界面中提供具体的默认实现.如果这样的默认接口方法需要是事务边界,我们别无选择:我们必须在接口方法上放置@Transactional注释.

这会起作用(即在这种情况下春天是否会尊重交易边界)?如果是这样,这种方法有任何隐藏的陷阱吗?

java spring annotations transactions java-8

14
推荐指数
1
解决办法
2631
查看次数

Java 8 - 流意识形态

我最近开始玩Java 8,之前已经在Haskell/Scala中做过点点滴滴.我正在尝试使用Java中的高阶函数,例如map或者forEach,我正在努力理解将一切都推向Stream意识形态的动机是什么.我理解它提供了很好的通用抽象,它应该是懒惰的,但让我们考虑一个非常简单的常见例子:

list.map(x -> do_sth(x));
Run Code Online (Sandbox Code Playgroud)

很常见的习语,期待这个回归List<T>.现在,在Java 8中,我需要做这样的事情:

list.stream().map(x -> doSth(x)).collect(Collectors.toList())
Run Code Online (Sandbox Code Playgroud)

现在,到目前为止,我看到这个,在调用collect之前,流将不会应用地图,因此将会有一个通过集合下的集合.我也看不出是为什么地图,列表如常见的使用情况map.toList(),list.groupBy()将不会被添加到相应的接口?我在这里缺少一个潜在的设计决策吗?

java collections lambda java-8

14
推荐指数
1
解决办法
1230
查看次数