我正在尝试使用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)));
Output: 2
2
我知道list.indexOf(e)
总是打印第一次出现的索引。如何打印所有索引?
首先,使用Lambdas并不是解决所有问题的方法…但是,即使如此,作为for循环,您也可以编写它:
List<Integer> results = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
if (search == list.get(i).intValue()) {
// found value at index i
results.add(i);
}
}
现在,这没有什么特别的错误,但是请注意,这里的关键方面是索引,而不是值。索引是“循环”的输入和输出。
作为流:
List<Integer> list = Arrays.asList(10, 6, 16, 46, 5, 16, 7);
int search = 16;
int[] indices = IntStream.range(0, list.size())
.filter(i -> list.get(i) == search)
.toArray();
System.out.printf("Found %d at indices %s%n", search, Arrays.toString(indices));
产生输出:
Found 16 at indices [2, 5]
我知道总是打印第一次出现的索引。我如何打印所有的索引?
问题内容: 我有一个清单清单: 搜索列表并返回其中一项的位置的最干净方法是什么? 我已经看过该方法,但是似乎并没有在列表中解压缩列表。 给出:,不是我所期望的… 问题答案: 我会做这样的事情: 这将返回一个元组列表,其中第一个索引是第一个列表中的位置,第二个索引是第二个列表中的位置(注意:您要查找的颜色,即)。 对于问题中的示例,返回值为: 如果您只需要懒惰地找到找到颜色的第一个位置,则可以使用以
我有一份名单。每个人都有名字和年龄。 我想使用流来查找此人是否已经在列表中。
问题内容: 如果要尝试在列表中查找某项的索引,则可以采用几种不同的方法来完成,这就是我所知道的最快的方法 另一种方式不是pythonic且速度较慢 第一种方法无疑是更快的方法,但是如果您想更快地进行操作,那该怎么办呢?对于第一个索引使用方法 速度很快,但无法处理多个索引如何加快速度? 问题答案: 假设您想要一个列表作为输出:对于我的测试,所有选项似乎都表现出相似的时间性能,列表理解最快(几乎没有)
我试图通过搜索来查找。有人知道怎么做吗? 我看到有但我想要类似python的。
我正在尝试使用查询检索dynamodb表中的所有项。下面是我的代码: 但是,我收到以下错误: 我的代码非常简单,出自boto dynamodb2文档,因此我不确定为什么会出现上述错误。任何见解都将受到赞赏(这是新的,有点迷失)。谢谢 编辑:我有一个散列键和一个范围键。我能够通过特定的哈希键进行查询。例如 但我如何检索所有项目?