相关疑难解决方法(0)

从Java 8中的java.util.stream.Stream中检索List

我正在玩Java 8 lambdas来轻松过滤集合.但我没有找到一种简洁的方法来将结果作为新列表检索到同一语句中.到目前为止,这是我最简洁的方法:

List<Long> sourceLongList = Arrays.asList(1L, 10L, 50L, 80L, 100L, 120L, 133L, 333L);
List<Long> targetLongList = new ArrayList<>();
sourceLongList.stream().filter(l -> l > 100).forEach(targetLongList::add);
Run Code Online (Sandbox Code Playgroud)

网上的例子没有回答我的问题,因为他们停止而没有生成新的结果列表.必须有一个更简洁的方式.我本来期望的是,Stream类有方法为toList(),toSet(),...

有没有办法targetLongList可以直接由第三行分配变量?

collections lambda java-8 java-stream

431
推荐指数
7
解决办法
31万
查看次数

更好的方法来生成字母表中所有字母的数组

现在我正在做

for (char c = 'a'; c <= 'z'; c++) {
    alphabet[c - 'a'] = c;
}
Run Code Online (Sandbox Code Playgroud)

但是有更好的方法吗?与Scala相似'a' to 'z'

java

65
推荐指数
7
解决办法
19万
查看次数

Arrays.asList()不能正常工作?

我有一个float [],我想得到一个具有相同元素的列表.我可以做一个又一个添加它们的丑陋的事情,但我想使用Arrays.asList方法.但是有一个问题.这有效:

List<Integer> list = Arrays.asList(1,2,3,4,5);
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.

int[] ints = new int[] {1,2,3,4,5};
List<Integer> list = Arrays.asList(ints);
Run Code Online (Sandbox Code Playgroud)

asList方法接受一个varargs参数,对我来说,扩展是一个数组的"简写".

问题:

  • 为什么第二段代码返回List<int[]>但不返回List<int>.

  • 有没有办法纠正它?

  • 为什么自动装箱不在这里工作; 即int[]Integer[]

java arrays list variadic-functions

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

Java Unicode编码

Java char2个字节(最大大小为65,536)但是有95,221个 Unicode字符.这是否意味着您无法在Java应用程序中处理某些Unicode字符?

这可归结为您使用的字符编码吗?

java unicode character-encoding

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

使用数字范围填充数组

是否有任何语法/包允许快速填充具有数字范围的java数组,例如perl?

例如

int[] arr = new int[1000];
arr=(1..500,301..400,1001..1400); // returns [1,2,3,4,...,500,301,302,...,400,1001,1002,...1400]
Run Code Online (Sandbox Code Playgroud)

此外,这里有一个包,允许在如上所述的数字列表中获取第n个数字,而不实际创建数组(可能是巨大的)?

例如

BunchOfRangesType bort = new BunchOfRangesType("1..500","301..400","1001..1400");
bort.get(0); // return 1
bort.get(500); // return 301
bort.get(501); // return 302
Run Code Online (Sandbox Code Playgroud)

实现起来并不困难,但我想这可能很常见,也许它已经完成了.

java arrays

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

Arrays.asList(int [])不起作用

当我运行以下代码时,不会打印输出.

int[] array = {3, 2, 5, 4};

if (Arrays.asList(array).contains(3))
{
    System.out.println("The array contains 3");
}
Run Code Online (Sandbox Code Playgroud)

java arrays list

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

Java 流 - 将 int 数组映射并存储到 Set 中

我有一个 的数组[5, 6, 7, 3, 9],我想将数组中的每个元素减去 2,然后将其存储在 a 中Set,所以我所做的是

Set<Integer> mySet = Arrays.stream(arr1).map(ele -> new Integer(ele - 2)).collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)

但我在这里有两个例外

  1. The method collect(Supplier<R>, ObjIntConsumer<R>, BiConsumer<R,R>) in the type IntStream is not applicable for the arguments (Collector<Object,?,Set<Object>>)
  2. Type mismatch: cannot convert from Collector<Object,capture#1-of ?,Set<Object>> to Supplier<R>

这些错误是什么意思,我如何通过Java Stream操作解决这里的问题?

java collections java-stream

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

如何将 Stream&lt;int[]&gt; 转换为 Stream&lt;Integer&gt;

有没有办法转换Stream<int[]>Stream<Integer>

int[] arr2 = new int[] { 54, 432, 53, 21, 43 };
// Below gives me Stream<int[]> 

Stream.of(arr2);  // I want to convert it to Stream<Integer>
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

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

将数字字符串转换为整数列表

我正在对 java 8 流功能进行一些练习,因此想到将知识应用于将数字字符串转换为整数列表的问题

一个典型的测试看起来像

 @Test
    public void testGetListofIntegersFromString(){
        List<Integer> result = getIntegers("123456780");
        assertEquals(Arrays.asList(1,2,3,4,5,6,7,8,0),result);
    }
Run Code Online (Sandbox Code Playgroud)

我写了下面的方法

List<Integer> getIntegers(String value) {
       return IntStream.rangeClosed(0, value.length() - 1).map(i -> Integer.valueOf(value.substring(i,i+1))).collect(?????);
    }
Run Code Online (Sandbox Code Playgroud)

我被困在使用哪个函数来获取我尝试过的整数列表collect(Collectors.toList())它给出了编译错误。

请建议我们是否可以按照不同的方法来解决这个问题。

java java-8 java-stream

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

如何按升序对IntStream进行排序?

我已经将2D int数组转换为Stream:

IntStream dataStream = Arrays.stream(data).flatMapToInt(x -> Arrays.stream(x));
Run Code Online (Sandbox Code Playgroud)

现在,我想按升序对列表进行排序.我试过这个:

dataStream.sorted().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

但我得到编译时错误 错误

我对此感到困惑,因为在我看到的例子中,类似的事情没有错误.

java sorting java-stream

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

将java Stream转换为Set

我有一个2-D的int数组,以及一个带有指向其中一行的参数的方法.我想Set在该行的元素上返回非零值,并且我想在没有for循环的情况下执行此操作.所以这就是我尝试过的:

public Set<Integer> getNeighbors(int node) {
        assert node >= 0 && node < numNodes : "getNeighbors(): Invalid node parameter given: " + node + ".";
       return Arrays.stream(matrix[node]).filter(n->n>0).collect(Collectors.toSet());
    }
Run Code Online (Sandbox Code Playgroud)

不幸的是,我得到一个编译时错误,有点难以解析:

来自我的IDE的屏幕截图

有任何想法吗?

java lambda java-stream

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

如何将流收集到列表中?

我正在学习一些教程,Java Streams看起来所有这些教程都已经过时了(或者显然我不明白)

 var list = Arrays.stream(new int[] {1,2,3,4,5,6})
            .filter(x -> x > 3)
            .collect(toList());
Run Code Online (Sandbox Code Playgroud)

它告诉我这个错误:

Expected 3 arguments but found 1
Run Code Online (Sandbox Code Playgroud)

但是每个教程都使用这样的收集代码。

出了什么问题?

java java-stream

0
推荐指数
1
解决办法
360
查看次数

如何在java中将IntStream转换为List?

我想将随机数流转换为列表:

public static void main(String[] args) {
        System.out.println(
                new Random().ints(10, 0, 20).
                        collect(Collectors.toList()));
    }
Run Code Online (Sandbox Code Playgroud)

但这给出了一个例外

java: method collect in interface java.util.stream.IntStream cannot be applied to given types;
  required: java.util.function.Supplier<R>,java.util.function.ObjIntConsumer<R>,java.util.function.BiConsumer<R,R>
  found: java.util.stream.Collector<java.lang.Object,capture#1 of ?,java.util.List<java.lang.Object>>
  reason: cannot infer type-variable(s) R
    (actual and formal argument lists differ in length)
Run Code Online (Sandbox Code Playgroud)

那么如何在java中将流转换为列表?

java list java-stream

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