网页装wordpress,肇庆seo网络推广,建设机械官方网站,做网站必须需要服务器嘛一、Motivation 1. Java支持哪种类型的一维数据结构#xff1f; Java中用于在单一维度中存储数据的数据结构#xff0c;如arrays or ArrayLists. 2. 如何在Java下创建一维数据结构#xff1f;#xff08;1-dimensional data structure#xff09; 定义和初始化这些一…一、Motivation 1. Java支持哪种类型的一维数据结构 Java中用于在单一维度中存储数据的数据结构如arrays or ArrayLists. 2. 如何在Java下创建一维数据结构1-dimensional data structure 定义和初始化这些一维数据结构 int[] arr new int[10] int[] numbers {1, 2, 3, 4, 5}; // 使用初始化语法创建并赋值 Integer list new ArrayList()用于动态列表 3. 我们如何使用它们如何maintain它们 数组或列表中添加、删除或访问元素。
维数据结构主要包括对其进行动态管理和更新包括扩展大小、添加新元素、删除元素、检查元素等操作 4. 我们可以在Java下迭代一维数据结构吗 for或for-each这样的循环来遍历一维结构如数组或列表中的元素。 • 数组用于固定大小的数据存储适用于已知大小且不需要频繁扩展的场景。 • ArrayList 用于动态大小的数据存储适用于需要频繁修改数据的场景。 二、Menu
• Collections and List
• Using List and ArrayList
• Iterators 三、Comments on code style 代码风格的注释
1. 省略 this. 关键字 一般情况下我们不需要在方法调用前加上 this.除非在构造函数或方法内部需要明确区分实例变量和局部变量时才使用。 • 不推荐的写法this.loadFromFile(fname); • 推荐的写法loadFromFile(fname); • Explanation: 在 Java 中如果没有命名冲突通常不需要使用 this 关键字来调用实例方法或访问实例变量。
2. 省略包含单一语句的花括号 {} 如果 if、while 等控制语句只包含一个语句那么可以省略 {}使代码更加简洁。
• 不推荐的写法 while (i name.length) { name[i] null; } • 推荐的写法 while (i name.length) name[i] null; 四、集合类型 (Collection Types) Java 集合框架 的接口和类的层次结构并展示了如何使用它们来处理数据。 1. 接口 Collection 是一个通用接口表示一个元素集合所有 Java 集合框架的实现都继承自该接口。 List 是 Collection 接口的子接口表示一种有序集合允许重复的元素。
2. 类 ArrayList 和 LinkedList 是实现了 List 接口的具体类分别基于动态数组和链表结构。
3. 接口的继承关系
• List 继承自 Collection并且它实现了多种有序的集合操作。例如ArrayListE 是基于动态数组实现的而 LinkedListE 是基于链表实现的。
4. 子接口扩展
• 子接口如 List会继承父接口如 Collection的方法并且可以添加自己的特有方法。
The sub interface has all the methods of the super interface
五、Methods on Collection and List
1. Collection 接口中的方法 • isEmpty(): 判断集合是否为空返回 boolean 类型。 • size(): 返回集合中元素的个数返回 int 类型。 • contains(E elem): 判断集合中是否包含指定元素返回 boolean 类型。 • add(E elem): 向集合中添加元素返回 boolean 类型表示是否成功添加。 • remove(E elem): 移除集合中的指定元素返回 boolean 类型表示是否成功移除。 • iterator(): 返回一个迭代器对象用于遍历集合中的元素。 // 获取 Iterator 对象 IteratorString iterator list.iterator(); // 使用迭代器遍历元素 while (iterator.hasNext()) { String fruit iterator.next(); System.out.println(fruit); } Iterator 接口 定义了三个常用方法 1. hasNext()检查是否还有下一个元素。 2. next()获取下一个元素。 3. remove()删除当前元素可选操作。 2. List 接口中的方法
E 代表的是 “元素”Element的泛型类型参数。它是一个通用的类型参数通常用于表示集合中存储的对象类型。比如ListE 就表示 一个可以存储任意类型元素的列表 • add(int index, E elem): 在指定位置 index 插入元素 elem。 • remove(int index): 移除指定位置的元素返回被移除的元素。 • get(int index): 获取指定位置的元素返回该元素。 • set(int index, E elem): 替换指定位置的元素返回被替换的元素。 • indexOf(E elem): 返回指定元素在列表中的位置索引如果元素不存在则返回 -1。 • subList(int from, int to): 返回一个新的子列表从 from 索引到 to 索引之间的元素。 六、使用集合类型 (Using a collection type)
1. 声明集合类型变量
变量或字段应声明为接口类型而不是具体实现类。这是为了使代码更加灵活可以随时更换具体的实现类例如从 ArrayList 切换到 LinkedList。 List 是一个接口代表有序集合它有多个具体的实现类如 ArrayList 和 LinkedList。当你声明一个集合类型时最好使用接口类型例如 List而不是具体的实现类例如 ArrayList 或 LinkedList。 • 示例The type between ““ and “” is the type of the elements // 声明为 List 接口类型具体实现可以是 ArrayList 或 LinkedList private ListTask tasks; // 创建具体实现对象时可以选择不同的实现类 tasks new ArrayListTask(); // 使用 ArrayList 实现 // 或者 tasks new LinkedListTask(); // 使用 LinkedList 实现 这里的 ListTask 表示任务的集合Task 是任务对象的类型。
2. 创建集合对象
使用实现了集合接口的类来创建对象。比如通过 ArrayList 或 LinkedList 来实现 List 接口。
• 示例 tasks new ArrayListTask(); • 这行代码创建了一个 ArrayList 类型的 tasks 集合存储 Task 类型的元素。 3. 操作集合中的元素
• 一旦创建了集合对象就可以调用集合方法来访问或修改集合中的元素例如 • add() 用于添加元素 • remove() 用于删除元素 • get() 用于获取元素等。 七、Example 1. TodoList – 任务的集合
• TodoList 是一个任务集合用于按顺序管理需要完成的任务。任务按照它们应该完成的顺序存储在集合中。 集合的类型是 List其中 Task 是任务对象的类型。 Collection type: List of tasks 2. TodoList 的要求 • 从文件中读取任务列表 可以通过文件存储任务并从中读取任务列表。 • 显示所有任务 提供一个方法来显示当前所有的任务确保任务列表是清晰的。 • 添加任务 可以在列表的末尾添加新任务或者在指定的位置插入任务。 • 删除任务 从列表中删除指定的任务。 • 移动任务 将任务从一个位置移动到另一个位置确保任务按顺序执行。 实现了 ActionListener 接口的 TodoList 类。它的作用是从文件中读取任务列表并存储在 ListTask 类型的集合中 public class TodoList implements ActionListener{ private ListTask tasks; public void readTasks(String fname){ try { Scanner sc new Scanner(new File(fname)); tasks new ArrayListTask(); while ( sc.hasNext() ) tasks.add(new Task(sc.next())); sc.close(); } catch(IOException e){…} displayTasks(); } askTask() 和 askIndex() 方法用于向用户询问任务内容或索引值。
3. Iterator 在 Java 中的应用
1 for-each 循环转为 Iterator for (Task task : tasks){ textArea.append(task \n); for-each 循环 本质上是 Iterator 的一种简化写法。 IteratorTask iter tasks.iterator(); while (iter.hasNext()) { Task task iter.next(); textArea.append(task \n); } 2 Iterator 接口
• Iterator 接口有两个主要方法 • hasNext()检查是否有下一个元素。 • next()返回下一个元素。 public interface IteratorE { public boolean hasNext(); public E next(); } 使用 Iterator 遍历 ListString 中的元素。 for ( String str : items) System.out.print(str “, “); IteratorString iter items.iterator(); while (iter.hasNext()){ String str iter.next(); System.out.print(str “, “); } 八、List 与数组Array的对比
1. List 的优势
• 没有大小限制可以根据需要自动增长。
• 提供了很多内置方法如 add()、get()、remove() 等操作更加方便。
2. 数组的局限性
• 数组大小固定不能动态扩展。如果需要改变数组的大小必须创建新的数组。
• 数组操作比较麻烦尤其是需要处理元素的添加、删除时必须手动处理大小和位置的变动。