Java 数组列表的索引?

Java 数组列表的索引?,java,arraylist,Java,Arraylist,从我的AP计算机科学评论书: 以这个节目段为例。您可以假设wordList已声明为ArrayList for(字符串s:wordList) 如果(s.长度()

从我的AP计算机科学评论书:

以这个节目段为例。您可以假设
wordList
已声明为
ArrayList

for(字符串s:wordList)
如果(s.长度()<4)
System.out.println(“短词”);
“短单词可以打印的最大次数是多少?”

书上说答案是wordList.size(),但为什么不是wordList.size()-1呢? ArrayList的索引与常规数组不同吗?我的书说了一些关于它的东西,自动将一个添加到索引中,但我可能读错了

书上说答案是wordList.size(),但为什么不是wordList.size()-1呢

它不会也不可能,因为它可以打印的最大次数是
wordList
中的所有单词少于四个字符

我认为您可能将
ArrayList
中的元素数量与
ArrayList
的有效索引混淆了。Java中的数组和
List
s是基于零的,因此从
0
运行到
List.size()-1
。这意味着最后一个元素位于
list.size()-1
。这样想吧。如果您有数字
0,1,2,3
,您总共有多少个数字?你有四个号码。但是,如果将这些数字放入一个基于零的数组中,则第一个元素位于位置
0
,第二个元素位于位置
1
,依此类推,直到最后一个元素位于位置
3

这张图片可能会帮助您:

Indices:   0   1   2   3
         +---+---+---+---+
Values:  | 1 | 2 | 3 | 4 |
         +---+---+---+---+
书上说答案是wordList.size(),但为什么不是wordList.size()-1呢

它不会也不可能,因为它可以打印的最大次数是
wordList
中的所有单词少于四个字符

我认为您可能将
ArrayList
中的元素数量与
ArrayList
的有效索引混淆了。Java中的数组和
List
s是基于零的,因此从
0
运行到
List.size()-1
。这意味着最后一个元素位于
list.size()-1
。这样想吧。如果您有数字
0,1,2,3
,您总共有多少个数字?你有四个号码。但是,如果将这些数字放入一个基于零的数组中,则第一个元素位于位置
0
,第二个元素位于位置
1
,依此类推,直到最后一个元素位于位置
3

这张图片可能会帮助您:

Indices:   0   1   2   3
         +---+---+---+---+
Values:  | 1 | 2 | 3 | 4 |
         +---+---+---+---+

当然,最大值是wordList.size(),当所有wordList的单词都是短单词时会发生这种情况。然后,从位置0到位置wordList.size()-1(包括两者)的wordList是短的。

当然,最大值是wordList.size(),当所有wordList的单词都是短单词时会发生这种情况。然后,从位置0到位置wordList.size()-1(包括这两个)的wordList较短。

数组或ArrayList的最大索引将为size-1。这是因为集合的索引基于0。您可以将索引视为偏移量

假设我有一个包含以下内容的ArrayList:

[“abc”]

数组中有
1
元素,因此其大小为
1
。第一个元素的索引(或偏移量)是
0
,因为它位于数组的根。如果我的数组是:

[“abc”、“bcd”、“cde”、“def”]


然后您可以看到数组中有4个条目,因此大小为
4
。最后一个元素“def”的偏移量是3,因为您必须从根向前走3步才能到达。0步给出“abc”,1步给出“bcd”,2=“cde”和3=“def”。因此,
大小是4,但您无法获取第4个索引处的项目,因为4个步骤将超出“def”的范围。

数组或ArrayList的最大索引将是size-1。这是因为集合的索引基于0。您可以将索引视为偏移量

假设我有一个包含以下内容的ArrayList:

[“abc”]

数组中有
1
元素,因此其大小为
1
。第一个元素的索引(或偏移量)是
0
,因为它位于数组的根。如果我的数组是:

[“abc”、“bcd”、“cde”、“def”]

然后您可以看到数组中有4个条目,因此大小为
4
。最后一个元素“def”的偏移量是3,因为您必须从根向前走3步才能到达。0步给出“abc”,1步给出“bcd”,2=“cde”和3=“def”。因此,
大小是4,但您无法获取第4个索引处的项目,因为4个步骤超出了“def”。

for(字符串s:wordList)
如果(s.长度()<4)
System.out.println(“短词”);
基本上是说“调用列表中的第一个单词。如果这个单词的长度小于4个字母,请在控制台上打印“短单词”。现在,重复第二个单词,依此类推,直到没有单词为止。”

因此,如果列表中的所有单词长度小于4个字母,“短单词”将被打印wordlist.size()次。

for(字符串s:wordlist)
如果(s.长度()<4)
System.out.println(“短词”);
基本上是说“调用列表中的第一个单词。如果这个单词的长度小于4个字母,请在控制台上打印“短单词”。现在,重复第二个单词,依此类推,直到没有单词为止。”

因此,如果列表中的所有单词长度小于4个字母,“短单词”将被打印wordlist.size()次。

您会问:

“短单词可以打印的最大次数是多少?”

如果
wordList
的所有项目都有
length<4
,则所有项目都将被打印

那么,
wordList
有多少个iTen?简单:
wordList.size()

Arr
for(String s : wordList)
   if(s.length() < 4)
     System.out.println("SHORT WORD");
ArrayList wordList = new ArrayList<String>();
wordList.add("firstWord");
wordList.add("2ndWrd");
wordList.add("3w");
wordList.get(0); // returns "firstWord"
wordList.get(1); // returns "2ndWrd"
wordList.get(2); // returns "3w"
wordList.get(3); // throws an exception (IndexOutOfBoundsException)
ArrayList<String> wordList = new ArrayList<String>() {
        @Override
        public Iterator<String> iterator() {
            return new Iterator<String>() {
                @Override
                public boolean hasNext() {
                    return true;
                }

                @Override
                public String next() {
                    return "";
                }

                @Override
                public void remove() {
                    throw new UnsupportedOperationException("Not supported yet.");
                }
            };
        }
    };
    for (String s : wordList) {
        if (s.length() < 4) {
            System.out.println("SHORT WORD");
        }
    }