标签: java-8

Java Lambda表达式

我目前正在JDK 1.8上学习lambda表达式.我遇到了一些我发现我不理解的代码.

这是代码:

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.lang.Comparable;

/**
 * Hello world!
 *
 */
public class App
{
    public static void main( String[] args ) throws Exception
    {

        List<String> list = Arrays.asList("a", "b", "c");
        sort(list, Comparable::<String>compareTo);

    }

    interface MyComparable {
        public <T extends Comparable<T>> int compare(T obj1, T obj2 );
    }

    public static <T extends Comparable<T>> void sort(List<T> list, MyComparable comp) {

        int n = comp.compare("5","2");
        System.out.println(n);
    }

}
Run Code Online (Sandbox Code Playgroud)

comp.compare("5", "3")最终执行"5".compareTo("2").我的理解是编译器需要找到一个具有相同签名的静态方法

public <T extends …
Run Code Online (Sandbox Code Playgroud)

java lambda java-8 method-reference

-3
推荐指数
1
解决办法
810
查看次数

将所有列表值合并到地图中

我想将地图转换为:

Map<String, List<String>> 
Run Code Online (Sandbox Code Playgroud)

List<String> 
Run Code Online (Sandbox Code Playgroud)

结果列表是所有列表值的合并。

java java-8 java-stream

-3
推荐指数
1
解决办法
1778
查看次数

使用sorted进行Java Lambda不区分大小写排序的最佳方法

我正在查看Lambda排序方法,我似乎无法轻易找到不区分大小写的属性.这是代码.

@org.junit.Test
public void StackOverflowQuestion() throws Exception {

    List<String> sut = Arrays.asList("Xena","Scarlet","Joseph", "adam");
    Stream<String> output = sut.stream().sorted();

    output.forEach(trans2 -> System.out.println(trans2.toString()));

}
Run Code Online (Sandbox Code Playgroud)

我的输出是Joseph Scarlet Xena亚当

谢谢您的帮助.

java sorting lambda java-8

-3
推荐指数
1
解决办法
1977
查看次数

Java,MalformedURLException

我正在使用java.net.URL,但我收到了MalformedURLException.我试过查看文档,但我看不出我做错了什么.

下面是按下按钮时触发的代码示例.

public class DownloadController {
    public void downloadResource() {
        URL obj = new URL("http://www.example.com/docs/resource1.html");
    }
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我正在使用IntelliJ.没有更多的代码可以显示,上面的代码实际上是控制器.我刚刚开始研究它.

java java-8

-3
推荐指数
1
解决办法
237
查看次数

Java-8将方法的多个参数传递给流

考虑我有这个方法,它采用多个参数,我想做一些简单的计算,如count,sum,average,min,max,看看这个原生的例子:

public static void calculate(int... param) {
    int sum = 0;
    for (int i : param) {
        sum += i;
    }
    System.out.println(sum);
}
Run Code Online (Sandbox Code Playgroud)

如何(int... param)在Java-8 Stream中传递此参数并进行此计算?

java java-8 java-stream

-3
推荐指数
3
解决办法
1916
查看次数

Enums的继承

据我了解,Java枚举不可扩展.所以我想知道为什么枚举不是最终的定义.只是为了确保我理解我在JLS 8中查看的所有内容并找到以下内容:

枚举声明是隐式最终的,除非它包含至少一个具有类主体的枚举常量(第8.9.1节).

这是否意味着我可以创建一个可扩展的枚举常量,例如,自己的方法声明,字段,静态或对象初始化程序?

到目前为止,我没有找到一种方法可以让我得出结论,即枚举可能总是隐含最终的.我哪里错了?

java enums java-8

-3
推荐指数
1
解决办法
105
查看次数

java.time.DateTimeException:年份的无效值(有效值-999999999-999999999)

当我尝试将epochTime转换为LocalDate时,出现此异常:

1)日期:2017-05-05 10:08:52.0

2)对应纪元:1493959132000

LocalDate lastUpdatedDate = LocalDate.ofEpochDay(1493959132000);
Run Code Online (Sandbox Code Playgroud)

例外情况:

java.time.DateTimeException: Invalid value for Year (valid values -999999999 - 999999999): 4090323145
    at java.time.temporal.ValueRange.checkValidIntValue(ValueRange.java:330)
    at java.time.temporal.ChronoField.checkValidIntValue(ChronoField.java:722)
    at java.time.LocalDate.ofEpochDay(LocalDate.java:341)
Run Code Online (Sandbox Code Playgroud)

我了解到,java.time.LocalDate的源代码在https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html#ofEpochDay-long-

这实际上意味着什么,什么时候出现?

java epoch java-8 localdate

-3
推荐指数
1
解决办法
2814
查看次数

Java 8 Stream并在执行缩减时维护索引

这些天我一直在试图弄清楚如何使用Java 8流API执行减少并同时维护索引.这是一个例子:

我有以下字符串:

String charSequence = "kjsfjsfajdsfjsaaaaaasssddfddddbbbdddaaa";
Run Code Online (Sandbox Code Playgroud)

我想通过Stream操作返回三元组 (I, N, C)

哪里:

  • C 是一个角色
  • N 是一些事件 - 应该是最大的
  • I 是第一次出现的字符串的索引(如果有多个字符串,则为第一个)

例子:

  • "ddaaaacccjcccccjjj" 回报 (10, 5, c)
  • "ddaaacccaaa"的第一次出现"aaa"2这样的结果将是: (2, 3, a)

一般来说,如果我可以返回所有具有长度为3的子串的字符,那将是很好的,这样结果就是两个三元组(I, N, C) C.但这是可选的.如果我得到第一个三重权利,我可以自己前进.

更新:

我不是在寻找替代解决方案.我可以用另一个API很好地实现它.我试图理解为什么维护索引是困难的,或者为什么不能这样做,如果是这样的话.反对的好论据很好.

java lambda mapreduce java-8 java-stream

-3
推荐指数
1
解决办法
1023
查看次数

如何使用Java 8流使用集合流式传输地图?

我想使用Java 8流来收集带有集合的地图.

例如,拥有以下数据:

Map<String, Collection<Integer>> data;
Run Code Online (Sandbox Code Playgroud)

我想用相应的键字符串来处理处理每个整数值的元素.例如:

data.keyValueStream((k,v)-> ...)
Run Code Online (Sandbox Code Playgroud)

知道怎么做到这一点?谢谢.

*关于"你为什么需要它?"的问题,这可能是一堆原因,我不确定它是否重要.无论如何,我会和你一起"流动"...我的具体情况是在他们的特定键下批量插入数据库中的所有值.让它保持一个普通的Java 8流问题......

java dictionary multimap java-8 java-stream

-3
推荐指数
1
解决办法
539
查看次数

Java 8引入了IntStream,LongStream和DoubleStream,为什么他们没有添加CharStream和StringStream?

为什么Java 8没有StringStream和CharStream.

StringStream.of("String1","String2");

StringStream.concat(stream1,stream2);

StringStream.builder().add("String1").add("string2").accept("string3");
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

-3
推荐指数
1
解决办法
169
查看次数