Java 是否有更好的方法对列表进行分区并批量处理以更改源列表

Java 是否有更好的方法对列表进行分区并批量处理以更改源列表,java,list,arraylist,collections,Java,List,Arraylist,Collections,我将有一个基本上是动态的源列表。某些进程会不断地将记录添加到此源列表中。我想处理这个列表中的记录,比如说10个条目。一旦条目被处理,它就会从源列表中清除,这样我就不会再次处理它们,并确保列表不会增长 我也不希望为了添加记录而长时间阻止源列表(假设我们在同步块中做了一些事情)。有人能以有效的方式帮助解决这个问题吗 我计划使用Guava列表分区成批获取记录,但我不知道这是否适用于不断变化的列表。下面是分区列表并处理大小为10的元素的简单示例。 在10个元素之后,它将清除列表,并且再次可以在同一列表中

我将有一个基本上是动态的源列表。某些进程会不断地将记录添加到此源列表中。我想处理这个列表中的记录,比如说10个条目。一旦条目被处理,它就会从源列表中清除,这样我就不会再次处理它们,并确保列表不会增长

我也不希望为了添加记录而长时间阻止源列表(假设我们在同步块中做了一些事情)。有人能以有效的方式帮助解决这个问题吗


我计划使用Guava列表分区成批获取记录,但我不知道这是否适用于不断变化的列表。

下面是分区列表并处理大小为10的元素的简单示例。 在10个元素之后,它将清除列表,并且再次可以在同一列表中填充新元素。 在批处理过程中,可以使用此代码清除特定大小列表元素后的记录

    public static void main(String arg[]) {
        ArrayList<Integer> arrList = null;
        Scanner scan = null;
        char choice = 'n';
        try {
            arrList = new ArrayList<Integer>(10);
            scan = new Scanner(System.in);
            do {
                System.out.println("Enter 10 element and add in ArrayList");
                for (int i = 0; i < 10; i++) {
                    System.out.print("Enter element [" +i+"] :: ");
                    int number = scan.nextInt();
                    arrList.add(number);
                }

                for (Integer number : arrList) {
                    System.out.println("Elements in list = " + number);
                }
                int retval = arrList.size();
                if (retval == 10) {
                    arrList.clear();
                }
                System.out.println("Performing clear operation !!");
                System.out.println("Do you want to continue !!");
                String next = scan.next();
                choice = next.charAt(0);
            } while ((choice == 'y') || (choice == 'Y'));
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            scan.close();
            System.out.println("Exit  !!");
        }
    }
<>你可以按照你的要求改变这个代码。

希望这个例子对你有帮助

Enter 10 element and add in ArrayList

Enter element [0] :: 1

Enter element [1] :: 2

Enter element [2] :: 3

Enter element [3] :: 4

Enter element [4] :: 5

Enter element [5] :: 6

Enter element [6] :: 7

Enter element [7] :: 8

Enter element [8] :: 9

Enter element [9] :: 10

Elements in list = 1

Elements in list = 2

Elements in list = 3

Elements in list = 4

Elements in list = 5

Elements in list = 6

Elements in list = 7

Elements in list = 8

Elements in list = 9

Elements in list = 10

Performing clear operation !!

Do you want to continue !!

N

Exit  !!