Java &引用;块;阵列列表大小

Java &引用;块;阵列列表大小,java,arrays,arraylist,Java,Arrays,Arraylist,由于这个问题,我有一个2D ArrayList: 现在,由于这个问题,我把它放在一个2D数组中: 我需要我的ArrayList有一个“阻塞宽度大小”(bws),也就是说,当ArrayList的大小达到该数字(bws)时,它会“打断”ArrayList行: 但是,我不知道怎么做 编辑: 那么,我该怎么办呢?您没有详细说明接口,因此我只定义一些基础知识,您可以从中继续开发更多内容: 具有阻止宽度的列表应该能够添加元素 应该能够访问列表中的任意行 您可以继续定义一个迭代器,实现各种集合接口以及您

由于这个问题,我有一个2D ArrayList: 现在,由于这个问题,我把它放在一个2D数组中

我需要我的ArrayList有一个“阻塞宽度大小”(bws),也就是说,当ArrayList的大小达到该数字(bws)时,它会“打断”ArrayList行:

但是,我不知道怎么做

编辑:


那么,我该怎么办呢?

您没有详细说明接口,因此我只定义一些基础知识,您可以从中继续开发更多内容:

  • 具有阻止宽度的列表应该能够添加元素

  • 应该能够访问列表中的任意行

您可以继续定义一个迭代器,实现各种集合接口以及您想要的任何东西

请注意,任何客户端代码都不应该关心实现细节。请仔细考虑具有阻止宽度的列表的接口。该接口告诉客户端它现在需要的所有信息。接口的实现方式完全取决于实现类。也就是说,您可以轻松地存储two维列表,其宽度被阻塞为一个简单的
java.util.list
,但对客户端隐藏该列表

以下是我提出的准则:

public class BlockedWidthList<T> {

    public static void main(String[] args) {
        BlockedWidthList<Integer> myList = new BlockedWidthList<Integer>(6);
        for(int i = 0; i < 20; i++)
            myList.add(i);
        for(Integer entry : myList.getRow(2))
            System.out.println(entry);
    }

    /** @throws java.lang.IllegalArgumentException if 'blockedWidthSize' is less than or equal to zero */
    public BlockedWidthList(int blockedWidthSize){
        if(blockedWidthSize<1)
            throw new IllegalArgumentException("Width must be a positive number");
        this.blockedWidthSize = blockedWidthSize;
    }

    public final int blockedWidthSize;

    private List<T> internal = new ArrayList<T>();

    public void add(T elem){
        internal.add(elem);
    }

    /** Access a row in the blocked width list by a row index. Indexing starts at 0
      *
      * @return A list containing up to 'blockedWidthSize' elements
      * @throws java.lang.IndexOutOfBoundsException if the row does not exist
      */
    public List<T> getRow(int rowIndex){
        if (rowIndex < 0) throw new IndexOutOfBoundsException("Negative row");
        int startIdx = rowIndex * blockedWidthSize;
        return internal.subList(startIdx, startIdx + blockedWidthSize);
    }
}
公共类BlockedWidthList{
公共静态void main(字符串[]args){
BlockedWidthList myList=新的BlockedWidthList(6);
对于(int i=0;i<20;i++)
添加(i);
for(整数条目:myList.getRow(2))
系统输出打印项次(输入);
}
/**如果“blockedWidthSize”小于或等于零,则@抛出java.lang.IllegalArgumentException*/
公共BlockedWidthList(int blockedWidthSize){

如果(BlockedWidthSize你的问题到底是什么?问题编辑在最后一行。我并不想粗鲁,但我认为你应该做的是写一些代码。然后展示给我们,并解释你在哪一部分遇到困难。然后我们就能帮你取得进展。你没有粗鲁:D。我只是在大约两天内想不出任何事情斯图对此,请认真考虑。@CrazyProgrammer即使您无法编写关于此问题的实际代码,我强烈建议您编写伪代码,描述您在思想上如何一步一步地执行此操作。然后我们可以帮助将其转换为Java。ArrayList必须是2D:ArrayList为什么实现细节很重要?如果您愿意的话,您始终可以在
BlockedWidthList
上定义迭代器,并将每个元素存储在
列表中。