相关疑难解决方法(0)

是否有一种简洁的方法来迭代Java 8中的索引流?

有没有一种简洁的方法来迭代流,同时有权访问流中的索引?

String[] names = {"Sam","Pamela", "Dave", "Pascal", "Erik"};

List<String> nameList;
Stream<Integer> indices = intRange(1, names.length).boxed();
nameList = zip(indices, stream(names), SimpleEntry::new)
        .filter(e -> e.getValue().length() <= e.getKey())
        .map(Entry::getValue)
        .collect(toList());
Run Code Online (Sandbox Code Playgroud)

与那里给出的LINQ示例相比,这似乎相当令人失望

string[] names = { "Sam", "Pamela", "Dave", "Pascal", "Erik" };
var nameList = names.Where((c, index) => c.Length <= index + 1).ToList();
Run Code Online (Sandbox Code Playgroud)

有更简洁的方法吗?

此外,看起来拉链已移动或被移除......

java java-8 java-stream

361
推荐指数
10
解决办法
24万
查看次数

使用流API查找列表中项目的所有索引

我正在尝试使用Java 8流和lambda表达式进行顺序搜索.这是我的代码

List<Integer> list = Arrays.asList(10, 6, 16, 46, 5, 16, 7);
int search = 16;
list.stream().filter(p -> p == search).forEachOrdered(e -> System.out.println(list.indexOf(e)));
Run Code Online (Sandbox Code Playgroud)
Output: 2
        2
Run Code Online (Sandbox Code Playgroud)

我知道list.indexOf(e)总是打印第一次出现的索引.如何打印所有索引?

java lambda list java-8

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

每个索引的Java 8

有谁知道如何分别以Java 8方式实现以下片段代码,是否有任何流方法可检测forEach中的第一个元素?

List<String> myList = new ArrayList<String>();
myList.add("A");
myList.add("B");

int i = 0;

for (final String value : myList) {
   if (i == 0) {
     System.out.println("Hey that's the first element");
   }

   System.out.println(value);

   i++;
 }
Run Code Online (Sandbox Code Playgroud)

Java8:

myList.stream().forEach(value -> {
  // TODO: How to do something special for first element?

  System.out.println(value);
});
Run Code Online (Sandbox Code Playgroud)

此外,假设目标是以下(控制台输出):

A    Something special
B
C
D
E
F
Run Code Online (Sandbox Code Playgroud)

java foreach for-loop java-8

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

Java 8- forEach方法迭代器行为

我最近开始检查新的Java 8功能.

我遇到过这个forEach迭代器 - 迭代了Collection.

我们假设我有一个值为{1,2,3,4,5} ArrayList的类型<Integer>

list.forEach(i -> System.out.println(i));
Run Code Online (Sandbox Code Playgroud)

此语句遍历列表并在其中打印值.

我想知道我将如何指定我希望它仅迭代某些特定值.

就像,我希望它从第二个值开始并迭代到第二个值.或类似的东西 - 或替代元素.

我该怎么做?

foreach iterator java-8

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

标签 统计

java-8 ×4

java ×3

foreach ×2

for-loop ×1

iterator ×1

java-stream ×1

lambda ×1

list ×1