当前位置: 首页 > 知识库问答 >
问题:

从具有定义位置的列表中获取分区数据[重复]

单于扬
2023-03-14

我使用下面的程序从定义的列表中找出所有子列表。请查找以下程序

public static void sublist() {
        int position = 2;

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

        arrlist.add("A");
        arrlist.add("B");
        arrlist.add("C");
        arrlist.add("D");
        arrlist.add("E");

        System.out.println("Original arrlist: " + arrlist);

        for (int i = 0; i < arrlist.size(); i += position) {
            int k = arrlist.size() > i + position ? i + position : arrlist.size();

            List<String> arrlist2 = arrlist.subList(i, k);
            System.out.println("Sublist of arrlist: " + arrlist2);
        }
    }

输出::

Original arrlist: [A, B, C, D, E]
Sublist of arrlist: [A, B]
Sublist of arrlist: [C, D]
Sublist of arrlist: [E]

以上程序工作正常。

我的问题是,有没有其他简单的方法来使用java 8?

共有1个答案

裴钧
2023-03-14

如果要使用Java 8流,可以使用如下“IntStream”:

List<List<String>> arrlist2 =
    IntStream.range(0, arrlist.size())
        .filter(i -> i % position == 0)
        .mapToObj(i -> arrlist.subList(i, Math.min((i + position), arrlist.size())))
        .collect(Collectors.toList());

输出此List与System.out.println(arrlist2);将如下所示:

[[A, B], [C, D], [E]]

重要的是,如果最后一个分区的大小小于其他分区的大小,则需要进行特殊情况处理。

否则,您也可以使用JavaGuava的Lists.partition(参见https://www.geeksforgeeks.org/java-guava-lists-partition-method-with-examples/)

由于Java 9,您还可以使用IntStream。像这样迭代:

List<List<String>> arrlist3 =
    IntStream.iterate(0, i -> i < arrlist.size(), i -> i + position)
        .mapToObj(i -> arrlist.subList(i, Math.min((i + position), arrlist.size())))
        .collect(Collectors.toList());
 类似资料:
  • 问题内容: 我有一个数字数组,想从位置“索引”中检索值之一。我查看了Java文档http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/Array.html,但我的代码仍未编译。 这是我的方法: 我在代表点的数组中有数字。值索引将是数组实体的位置。我该怎么做才能使这项工作?谢谢 ! 问题答案: 在Java中,数组索引由方括号表示。您可以像

  • 问题内容: 请告诉我如何获取特定行的列值= 123的列名。 问题答案: 结果

  • 问题内容: 因此,我有一个包含几个列表的列表,这些列表都首先包含三个字符串,然后是一个浮点数,例如: 如何制作一个返回最大值的函数(此处为9.1931)?我试过了 但这只是给我一个清单。 编辑:此外,以任何方式我可以获取值来自何处的索引?喜欢,来自哪个子列表? 问题答案: 循环浏览外部列表,然后选择每个子列表的最后一个元素: 最好将所有与函数相关的变量保留在范围内(将列表作为参数传递,并且不要通过

  • 我是相对较新的python,并试图获得列具有特定值的行。 下面是我的代码示例 然而,当我运行这个我得到一个错误TypeError: ufunc'bitwise_and'不支持的输入类型,和输入不能安全强制任何支持的类型根据铸造规则"安全" 有人知道我为什么会出现这个错误吗?我可以做些什么来返回特定的值?任何帮助都将不胜感激!

  • 问题内容: 有什么方法可以简化此代码,以获取提供的某一列的索引以获取特定行的索引吗?在这种情况下,索引将为,因为我要遍历第一列直到找到“ A”。感觉应该对此有一个linq解决方案,但我无法弄清楚。 问题答案: 如果使用DataTableExtensions.AsEnumerable()方法,则可以使用LINQ查询您的DataTable。然后,您可以用来确定给定谓词的索引: