### 数组和集合的学习笔记 #### 一、概述 在Java编程语言中,数组和集合是数据存储与操作的重要组成部分。数组是一种基本的数据结构,用于存储相同类型的数据元素;而集合(Collections)则是用于存储、检索和操作一组对象的数据结构。集合框架提供了多种容器对象,这些对象具有统一的设计,使得它们可以互换使用。本篇学习笔记将重点介绍列表(List)、集合(Set)、映射(Map)的不同子类的特点和使用方法。 #### 二、List(列表) **List** 是一种有序的集合,允许重复的元素。主要的实现包括ArrayList、LinkedList、Vector等。 1. **ArrayList** - 特点:基于动态数组实现的,线程不安全。 - 使用场景:适用于需要快速随机访问元素的情况,如根据索引进行查询或修改操作。 - 示例代码: ```java List<String> stringList = new ArrayList<>(); stringList.add("Hello"); stringList.add("World"); System.out.println(stringList.get(0)); // 输出 "Hello" ``` 2. **LinkedList** - 特点:基于双向链表实现,适合频繁插入和删除操作。 - 使用场景:当需要频繁地添加或删除元素时,使用LinkedList更加高效。 - 示例代码: ```java List<String> linkedList = new LinkedList<>(); linkedList.addFirst("First"); linkedList.addLast("Last"); System.out.println(linkedList.removeFirst()); // 输出 "First" ``` 3. **Vector** - 特点:类似于ArrayList,但是线程安全。 - 使用场景:早期多线程环境下使用较多,但现在更推荐使用并发集合类如CopyOnWriteArrayList。 - 示例代码: ```java Vector<String> vector = new Vector<>(); vector.add("Thread Safe"); System.out.println(vector.get(0)); // 输出 "Thread Safe" ``` #### 三、Set(集合) **Set** 是不允许有重复元素的集合,主要有HashSet、TreeSet两种实现。 1. **HashSet** - 特点:基于哈希表实现,提供较快的添加和查找速度。 - 使用场景:当需要存储不重复且不需要排序的元素时,使用HashSet非常合适。 - 示例代码: ```java Set<String> hashSet = new HashSet<>(); hashSet.add("Unique"); hashSet.add("Element"); System.out.println(hashSet.contains("Unique")); // 输出 true ``` 2. **TreeSet** - 特点:基于红黑树实现,自动按元素的自然顺序或自定义比较器排序。 - 使用场景:需要对集合中的元素进行排序时使用TreeSet。 - 示例代码: ```java TreeSet<String> treeSet = new TreeSet<>(); treeSet.add("Zebra"); treeSet.add("Apple"); treeSet.add("Cat"); System.out.println(treeSet.first()); // 输出 "Apple" ``` #### 四、Map(映射) **Map** 提供了键值对的映射关系,主要实现有HashMap、TreeMap、HashTable、LinkedHashMap等。 1. **HashMap** - 特点:基于哈希表实现,提供高效的键值对存取操作。 - 使用场景:最常用的映射实现,适合于大多数场景。 - 示例代码: ```java Map<String, Integer> hashMap = new HashMap<>(); hashMap.put("Key", 1); System.out.println(hashMap.get("Key")); // 输出 1 ``` 2. **TreeMap** - 特点:基于红黑树实现,自动按键的自然顺序或自定义比较器排序。 - 使用场景:当需要按键排序时使用TreeMap。 - 示例代码: ```java TreeMap<String, Integer> treeMap = new TreeMap<>(); treeMap.put("Zebra", 2); treeMap.put("Apple", 1); System.out.println(treeMap.firstKey()); // 输出 "Apple" ``` 3. **HashTable** - 特点:与HashMap类似,但是线程安全,并且不允许键或值为null。 - 使用场景:多线程环境下的简单键值存储。 - 示例代码: ```java Map<String, Integer> hashTable = new Hashtable<>(); hashTable.put("Key", 1); System.out.println(hashTable.get("Key")); // 输出 1 ``` 4. **LinkedHashMap** - 特点:维护元素的插入顺序,可以实现LRU缓存等功能。 - 使用场景:需要保留元素插入顺序或访问顺序时使用LinkedHashMap。 - 示例代码: ```java Map<String, Integer> linkedHashMap = new LinkedHashMap<>(16, 0.75f, true); linkedHashMap.put("A", 1); linkedHashMap.put("B", 2); System.out.println(linkedHashMap.keySet()); // 输出 [A, B] ``` 通过以上学习,我们可以了解到Java中数组和集合的不同实现类各有特点,在实际开发过程中应根据具体需求选择合适的类型。






























第一种方法:for循环遍历
int[] integers = {1, 2, 3, 4};
/* 开始遍历 */
for (int j = 0; j < integers.length; j++) {
int i = integers[j];
System.out.println(i);
}
第二种方法:foreach来遍历(jdk1.5版本中新加入的)
int[] integers = {1, 2, 3, 4};
/* 开始遍历 */
for (int i : integers) {
System.out.println(i);/* 依次输出“1”、“2”、“3”、“4” */
}
第三种方法:将字符串数组装换成集合对象来遍历
String[] strings = {"A", "B", "C", "D"};
Collection stringList = java.util.Arrays.asList(strings);
/* 开始遍历 */
for (Iterator itr = stringList.iterator(); itr.hasNext();) {
Object str = itr.next();
System.out.println(str);
}
遍历list的时候,如果要删除元素:1.itorator 2.用for(int i = list.size() - 1; i >= 0; i--)


- 粉丝: 21
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 数据库原理及应用第2章.ppt
- 基于聚类的二次异常入侵检测算法.docx
- 单片机人体脉搏检测系统设计.doc
- 电气基础知识讲座IT计算机专业资料.ppt
- 无线网络安全论文设计.docx
- 异步通信与同步通信.ppt
- 基于应用人才培养模式的计算机网络课程教改研究.docx
- DVBCQAM调制主要参数选择与测试.doc
- PLC的交流异步电机转速闭环控制系统设计.doc
- 计算机系统配套零、部件竞争策略分析报告.docx
- 《信息系统集成技术实践》课程大纲.doc
- 基于数据挖掘的针灸治疗重症肌无力的现代文献取穴规律分析.docx
- 电力信息网络安全存在问题及对策分析.docx
- 基于 Python 的自动驾驶规划与控制代码实现
- 下半年软考系统集成项目管理测验真题(上午).doc
- 自动化PLC课程设计实施方案指导书.doc


