Java 中的 List 方法
保留名为 tags 的 ArrayList<String>,先加入 oak 再加入 pine,并用 tags.get(0) 读取第一个值。编译 Rack.java 并运行 java Rack。屏幕应显示一行:oak。调用 get(0) 选取零号槽位。本页后续演示会显示 size() 打印 2,以及 remove(0) 后剩下 [pine]。读取一个槽位、计数、删掉一个槽位,就是本页要教的内容。
用 get 读取一个槽位
在 ArrayList 页你打印了整份列表并看到 [oak, pine]。那种完整打印仍然有效。本页每次只取一个值。调用 tags.get(0) 返回零号槽位里的词。槽位编号从零开始,与数组页的 plants[0] 同一思路,但这里用括号调用:get(0),不是名字后面单独写方括号。
打开 Rack.java。保留公共类名 Rack,使它与文件名一致。若你原样复制了 Shelf,请删掉残留的唯一教学行 System.out.println(tags);——本页保留的第一个文件改为打印 tags.get(0)。也删除任何 Scanner、nextLine、Bell.ring() 或 package 演示。程序不应等待你输入。
靠近顶部、在 public class Rack 之上保留:
import java.util.ArrayList;
在 main 里创建列表并加入同样两个词:
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
然后写:
System.out.println(tags.get(0));
在括号里传入 0。不要写 tags[0]。不要把打印整份列表当作第一个演示的必经路径。编译前先保存。
import java.util.ArrayList;
public class Rack {
public static void main(String[] args) {
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
System.out.println(tags.get(0));
}
}
在存放 Rack.java 的文件夹里运行 javac Rack.java。当圆括号、花括号、尖括号和分号匹配时,javac 自己不写任何行。然后运行 java Rack——不要 java Rack.java,也不要 java ArrayList。运行命令去掉 .java 结尾。
程序应打印一行后停止:oak。它不会要求你输入。若终端在等待键盘,说明某个文件里还留着旧练习的 nextLine 调用。删掉它,保留创建、两行 add 以及 System.out.println(tags.get(0));。
把运行走一遍。Java 从 Rack.main 开始。列表经两次 add 增长。get(0) 返回 oak。打印行写出该词。屏幕显示 oak。不应再打印别的。若看到 [oak, pine],你仍在打印整份列表。把打印行改成 tags.get(0)。若看到 ding 或 9,旧的 Porch 或 Pier 程序还在跑——改用 java Rack。
若误把打印写成 get(1),屏幕会显示 pine。那是合法 Java,但不是本页为第一个演示保留的文件。保留 get(0),让屏幕是 oak。若在只有两次 add 之后调用 get(2),运行时会抛错,因为二号槽位从未填过。这里留在 get(0)。
用 size 计数
第二个演示问列表里有多少个值。在同样两次 add 之后,调用 tags.size() 并打印该数字。
import java.util.ArrayList;
public class Rack {
public static void main(String[] args) {
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
System.out.println(tags.size());
}
}
用同样方式编译并运行:javac Rack.java,然后 java Rack。屏幕显示 2。方法 size() 返回整数。它不打印那些词本身。若屏幕显示 [oak, pine],你打印的是列表而不是 size()。若显示 oak,你还留着第一个演示的 get(0) 打印。第二个文件在两次 add 之后只保留 System.out.println(tags.size());。
本页不要给 ArrayList 发明 tags.length。固定数组用 .length。列表用 .size()。混用这些名字是数组页常见残留。列表请保留 size()。
用 remove 删掉一个槽位
第三个演示删除零号槽位,然后打印剩下的列表。
import java.util.ArrayList;
public class Rack {
public static void main(String[] args) {
ArrayList<String> tags = new ArrayList<String>();
tags.add("oak");
tags.add("pine");
tags.remove(0);
System.out.println(tags);
}
}
再次编译并运行。remove(0) 之后 oak 没了。pine 滑到零号槽位。打印列表显示 [pine]。屏幕不再是 [oak, pine]。若在 remove 之后打印 tags.get(0) 而不是整份列表,你会只看到 pine——用作检查可以,但保留的第三个文件打印列表,好让你看到只剩一个词时的方括号。
用确实存在的槽位号调用 remove。两次 add 之后,在任何删除之前,remove(0) 和 remove(1) 都合法。本页保留 remove(0),让 oak 先离开。不要对只有两个词的列表调用 remove(2)——那个槽位从未存在。
与创建 ArrayList 并 add 对比
在 ArrayList 页,教学文件停在 println(tags) 和屏幕 [oak, pine]。本页保留同样的创建与 add 习惯,再补上 get、size 和 remove。只打印整份列表的残留 Shelf 文件是历史,不是这里的测验路径。本页请按你正在学的演示运行 java Rack:先 get(0),再 size(),再 remove 加打印。
这些调用不需要新的 import。类型导入后它们属于 ArrayList。本页每个 Rack 文件顶部都保留 import java.util.ArrayList;。
当你稍后把键映射到值时,下一页——HashMap——会打开那个故事。这里留在 list 调用。不要把 put 或 map 语法当作本页要求。
留给 HashMap 的部分
本页收完基础 list 工具箱:读一个槽位、计数值、删一个槽位。下一页打开另一种集合,每条条目都有键和值。这里继续在 ArrayList 上使用 get、size 和 remove。不要在 Rack 演示里写 HashMap 行。
若附近还有旧的 Shelf.java,可以留下,或仅在它们混淆你运行哪个类时删除。编译你要学的那个演示文件后,运行 java Rack。
在 HashMap 之前
你可以保留 ArrayList<String> tags,加入 oak 与 pine,打印 tags.get(0) 看到 oak,打印 tags.size() 看到 2,并在 tags.remove(0) 之后打印列表看到 [pine]。为每个保留的演示编译 Rack.java 并运行 java Rack。list 方法完成了它们的工作。下一页是 HashMap,键在一个对象里指向一个值。
保留 import。在 get、size 或 remove 之前保留两次 add。把零号槽位保留为本页教学索引。这些习惯是继续前进前的检查点。当 get(0) 显示 oak 且 size() 显示 2 时,你已准备好进入下一主题。
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部