标签: java-8

如何比较LocalDate实例Java 8

我正在编写一个需要在日期中非常准确的应用程序,我想知道如何比较LocalDate实例..现在我使用的是:

LocalDate localdate1 = LocalDate().now();
LocalDate localdate2 = someService.getSomeDate();
localdate1.equals(localdate2);
Run Code Online (Sandbox Code Playgroud)

但我注意到我的应用程序给了我一些令人困惑的结果,我认为这是因为比较日期.

我正在考虑从1970年代开始获得时间并比较这两者,但我必须更容易,我很确定

compare date java-8

63
推荐指数
2
解决办法
12万
查看次数

Collectors.toSet()和HashSet

采取以下示例代码行:

Set<String> someSet = someColletion.stream().map(p -> p.toString()).collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)

我想要一个HashSet.把调试器带到代码中,我确实得到了一个HashSet.我看了看java.util.stream.Collectors.toSet()下面的代码:

public static <T> Collector<T, ?, Set<T>> toSet() {
    return new CollectorImpl<>((Supplier<Set<T>>) HashSet::new, Set::add,
                               (left, right) -> { left.addAll(right); return left; },
                               CH_UNORDERED_ID);
}
Run Code Online (Sandbox Code Playgroud)

合同保证 a Set,实施决定a HashSet; 看似合理.但是,我的实现需要由a保证的恒定时间查找HashSet,而不仅仅是任何旧的查找Set.如果执行toSet()决定使用say a FooSet,这完全在其权利范围内,那么我的实现就会受到影响.

这个问题的最佳实践解决方案是什么?

java java-8 java-stream collectors

63
推荐指数
1
解决办法
3万
查看次数

Java 8 Supplier在构造函数中包含参数

为什么供应商只支持no-arg构造函数?

如果存在默认构造函数,我可以这样做:

create(Foo::new)
Run Code Online (Sandbox Code Playgroud)

但如果唯一的构造函数采用String,我必须这样做:

create(() -> new Foo("hello"))
Run Code Online (Sandbox Code Playgroud)

java lambda functional-programming java-8 functional-interface

63
推荐指数
5
解决办法
7万
查看次数

有没有办法在java 8中将ZoneId转换为ZoneOffset?

我有一个epoch秒和一个zoneId,方法1.它可以转换为LocalDateTime与系统默认的zoneId,但我找不到方法将第二个转换为LocalDateTime by method2,因为没有ZoneOffset.systemDefault.我认为它是模糊的.

import java.time.{Instant, LocalDateTime, ZoneId, ZoneOffset}

val epochSecond = System.currentTimeMillis() / 1000

LocalDateTime.ofInstant(Instant.ofEpochSecond(epochSecond), ZoneId.systemDefault())//method1
LocalDateTime.ofEpochSecond(epochSecond, 0, ZoneOffset.MAX)//method2
Run Code Online (Sandbox Code Playgroud)

java java-8 java-time

63
推荐指数
5
解决办法
4万
查看次数

Java 8 Boolean.logicalOr方法

在Java 8中,Boolean添加了类中的新方法.

我们来谈谈其中一个

public static boolean Boolean.logicalOr(boolean a , boolean b)

现在,我的问题是,他们为什么需要?

以下两种情况之间有什么区别.

boolean result = a || b; 要么 Boolean result = Boolean.logicalOr(a,b);

什么是如此特别Boolean.logicalOr(),何时我更喜欢一个而不是另一个.

java java-8

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

Java8 java.util.Date转换为java.time.ZonedDateTime

尝试转换为时java.util.Date,我收到以下异常java.time.LocalDate.

java.time.DateTimeException: Unable to obtain ZonedDateTime from TemporalAccessor: 2014-08-19T05:28:16.768Z of type java.time.Instant
Run Code Online (Sandbox Code Playgroud)

代码如下:

public static Date getNearestQuarterStartDate(Date calculateFromDate){

    int[] quaterStartMonths={1,4,7,10};     
    Date startDate=null;

    ZonedDateTime d=ZonedDateTime.from(calculateFromDate.toInstant());
    int frmDateMonth=d.getMonth().getValue();
Run Code Online (Sandbox Code Playgroud)

我使用ZonedDateTime课程的方式有问题吗?

根据文档,这应该将java.util.Date对象转换为ZonedDateTime.上面的日期格式是标准日期?

我是否必须回到Joda时间?

如果有人可以提供一些建议,那就太好了.

java datetime date java-8 java-time

62
推荐指数
3
解决办法
5万
查看次数

Java 8的字符串重复数据删除功能

由于String在Java中(像其他语言一样)消耗大量内存,因为每个字符占用两个字节,Java 8引入了一个名为String Deduplication的新功能,它利用了char数组是字符串内部的最终事实,因此JVM可以搞砸他们.

到目前为止,我已经阅读了这个例子,但由于我不是一个专业的java编码器,我很难掌握这个概念.

这是它说的,

已经考虑了各种字符串复制策略,但现在实现的策略遵循以下方法:每当垃圾收集器访问String对象时,它会记录char数组.它接受它们的哈希值并将其与对数组的弱引用一起存储.一旦找到另一个具有相同哈希码的String,就会将它们与char进行比较.如果它们匹配,则将修改一个String并指向第二个String的char数组.然后不再引用第一个char数组,并且可以进行垃圾回收.

整个过程当然会带来一些开销,但是受到严格的限制.例如,如果找不到字符串有一段时间的重复项,则不再检查它.

我的第一个问题,

由于最近在Java 8更新20中添加了这个主题,因此仍然缺乏资源,这里是否有人可以分享一些关于如何帮助减少StringJava 消耗内存的实际示例?

编辑:

上面的链接说,

一旦找到另一个具有相同哈希码的String,就会将它们与char进行比较

我的第二个问题,

如果两个哈希码String相同,则Strings已经是相同的,那么为什么对它们进行比较charchar,一旦发现,这两个String具有相同的散列码?

java string java-8

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

null-safe mapping使用默认实现的Comparator

是否有内置的可能性在Java 8中创建一个空安全的映射比较器而无需编写自己的实现Comparator

运行以下代码时,它会导致NPE,因为keyExtractor参数Comparator.comparing()可能返回一个null值:

public class ToSort
{

    private String sortBy;

    public ToSort(String sortBy)
    {
        this.sortBy = sortBy;
    }

    public String getSortBy()
    {
        return sortBy;
    }

    public static void main(String[] args)
    {
        // mapping comparator
        Comparator<ToSort> comp = Comparator.comparing(ToSort::getSortBy);                          
        SortedSet<ToSort> set = new TreeSet<>(comp);
        ToSort o1 = new ToSort("1");
        ToSort o2 = new ToSort(null);

        set.add(o1);

        System.out.println(set.contains(o2)); //NPE because o2.getSortBy() == null

    }
}
Run Code Online (Sandbox Code Playgroud)

java.util.Comparator.lambda中线程"main"java.lang.NullPointerException中的异常$比较java.util.Comparator上的$ 77a9974f $ 1(Comparator.java:469)$$ Lambda $ 2/1480010240.compare(未知来源)at java.util.Comparators $ NullComparator.compare(Comparators.java:83),java.util.TreeMap.getEntryUsingComparator(TreeMap.java:376),位于java.util的java.util.TreeMap.getEntry(TreeMap.java:345) …

java comparator java-8

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

completablefuture join vs get

CompletableFuture.get()和CompletableFuture.join()之间的区别是什么?

以下是我的代码:

List<String> process() {

    List<String> messages = Arrays.asList("Msg1", "Msg2", "Msg3", "Msg4", "Msg5", "Msg6", "Msg7", "Msg8", "Msg9",
            "Msg10", "Msg11", "Msg12");
    MessageService messageService = new MessageService();
    ExecutorService executor = Executors.newFixedThreadPool(4);

    List<String> mapResult = new ArrayList<>();

    CompletableFuture<?>[] fanoutRequestList = new CompletableFuture[messages.size()];
    int count = 0;
    for (String msg : messages) {
        CompletableFuture<?> future = CompletableFuture
                .supplyAsync(() -> messageService.sendNotification(msg), executor).exceptionally(ex -> "Error")
                .thenAccept(mapResult::add);

        fanoutRequestList[count++] = future;
    }

    try {
        CompletableFuture.allOf(fanoutRequestList).get();
      //CompletableFuture.allOf(fanoutRequestList).join();
    } catch (InterruptedException | ExecutionException e) {
        // TODO Auto-generated catch block …
Run Code Online (Sandbox Code Playgroud)

java java-8

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

62
推荐指数
1
解决办法
2726
查看次数