java 集合知识
集合的概念java
集合的概念java在Java中,集合是一种用于存储对象的容器。
它提供了一系列方法来操作和处理这些对象。
Java中的集合主要分为两大类:Collection和Map。
Collection是一个接口,表示一组对象的容器,它有多个实现类,如List、Set 等。
Collection接口定义了一些常用的操作方法,如添加元素、删除元素、判断元素是否存在等。
List是有序的集合,可以有重复的元素。
常见的List实现类有ArrayList和LinkedList。
Set是无序的集合,不允许有重复的元素。
常见的Set实现类有HashSet和TreeSet。
Map是存储键值对的集合,每个键都是唯一的。
常见的Map实现类有HashMap 和TreeMap。
在使用集合时,首先需要创建集合对象,然后使用add()方法添加元素,使用remove()方法删除元素,使用contains()方法判断元素是否存在等。
也可以使用迭代器(Iterator)遍历集合中的每个元素。
示例代码如下:javaimport java.util.*;public class CollectionExample {public static void main(String[] args) {创建一个List集合List<String> list = new ArrayList<>();添加元素list.add("apple");list.add("banana");list.add("orange");输出集合元素for (String element : list) {System.out.println(element);}删除元素list.remove("banana");判断元素是否存在System.out.println(list.contains("apple")); 输出trueSystem.out.println(list.contains("banana")); 输出false }}上述代码创建了一个List集合,并添加了一些元素。
java中集合的概念
java中集合的概念Java中的集合是一种非常重要的数据结构,用于存储和操作一组对象。
集合框架包含了许多类和接口,可以方便地进行数据的存储、查询、排序等操作,使得Java程序开发变得更加高效和便捷。
在本文中,我们将逐步介绍Java中集合的概念和用法。
一、集合框架概述Java中的集合框架是一个包含了多个接口和类的层次结构,用于表示和操作一组对象。
集合框架包含了通用的集合接口和实现,以及特定的集合类和接口,如List、Set、Map等。
集合框架的接口和类都是通过泛型实现的,可以存储任意类型的对象,比如基本类型和自定义类型的对象。
二、集合框架的接口Java中的集合框架包含了多个接口,其中包括:1. Collection:代表一组对象的集合,是其他集合接口的父接口。
它定义了一些通用的方法,如添加、删除、迭代等。
2. List:代表有序的集合,其中每个元素都有一个对应的索引。
List允许重复元素出现,并且可以通过索引访问、添加、删除元素。
3. Set:代表无序的集合,其中每个元素都是唯一的。
Set不允许重复的元素出现,可以用来去重。
4. Map:代表一组键值对的集合,其中每个键都是唯一的。
Map 允许多个值对应同一个键,可以用来快速查找和存储数据。
三、集合类的实现Java中的集合类可以通过实现集合接口来实现。
如ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等都是集合类的实现,我们可以通过这些集合类来方便地实现对一组对象的操作。
例如:1. 使用ArrayList来实现List接口,可以进行元素的添加、删除、查询等操作:List<String> list = new ArrayList<>();list.add("Alice");list.add("Bob");System.out.println(list.get(1));2. 使用HashSet来实现Set接口,可以去重并存储元素:Set<Integer> set = new HashSet<>();set.add(1);set.add(2);set.add(2);System.out.println(set.size());3. 使用HashMap来实现Map接口,可以快速查找并存储数据:Map<String, Integer> hashMap = new HashMap<>(); hashMap.put("Alice", 12);hashMap.put("Bob", 18);System.out.println(hashMap.get("Bob"));四、集合的迭代Java中的集合类都实现了Iterable接口,因此可以使用迭代器来访问集合中的元素。
java集合类基础问题汇总
java集合类基础问题汇总1、Java集合类框架的基本接⼝有哪些?参考答案集合类接⼝指定了⼀组叫做元素的对象。
集合类接⼝的每⼀种具体的实现类都可以选择以它⾃⼰的⽅式对元素进⾏保存和排序。
有的集合类允许重复的键,有些不允许。
Java集合类提供了⼀套设计良好的⽀持对⼀组对象进⾏操作的接⼝和类。
Java集合类⾥⾯最基本的接⼝有:Collection:代表⼀组对象,每⼀个对象都是它的⼦元素。
Set:不包含重复元素的Collection。
List:有顺序的collection,并且可以包含重复元素。
Map:可以把键(key)映射到值(value)的对象,键不能重复。
2、为什么集合类没有实现Cloneable和Serializable接⼝?参考答案克隆(cloning)或者是序列化(serialization)的语义和含义是跟具体的实现相关的。
因此,应该由集合类的具体实现来决定如何被克隆或者是序列化。
3、什么是迭代器(Iterator)?参考答案Iterator接⼝提供了很多对集合元素进⾏迭代的⽅法。
每⼀个集合类都包含了可以返回迭代器实例的迭代⽅法。
迭代器可以在迭代的过程中删除底层集合的元素,但是不可以直接调⽤集合的remove(Object Obj)删除,可以通过迭代器的remove()⽅法删除。
4、Iterator和ListIterator的区别是什么?参考答案下⾯列出了他们的区别:Iterator可⽤来遍历Set和List集合,但是ListIterator只能⽤来遍历List。
Iterator对集合只能是前向遍历,ListIterator既可以前向也可以后向。
ListIterator实现了Iterator接⼝,并包含其他的功能,⽐如:增加元素,替换元素,获取前⼀个和后⼀个元素的索引,等等。
5、快速失败(fail-fast)和安全失败(fail-safe)的区别是什么?参考答案Iterator的安全失败是基于对底层集合做拷贝,因此,它不受源集合上修改的影响。
java集合的定义
java集合的定义1. Java集合是一种用于存储和操作一组对象的数据结构。
它提供了一种更高级别的抽象,可以方便地进行添加、删除、查找和遍历操作。
集合可以存储多个对象,并且可以根据需要动态调整大小。
2. Java集合框架是Java编程语言提供的一组接口、类和算法,用于实现各种集合类型。
它包括了List、Set、Queue和Map等常用集合接口,以及它们的具体实现类。
集合框架提供了一种标准化的方式来处理集合,使得开发人员可以更加方便地使用和操作集合。
3. Java集合框架中的每个集合都是通过特定的接口来定义的。
例如,List接口代表了一个有序的集合,可以包含重复的元素。
Set接口代表了一个无序的集合,不允许包含重复的元素。
Queue接口代表了一个先进先出的队列,可以用于实现任务调度和事件处理等场景。
Map接口代表了一组键值对的映射,可以通过键来查找对应的值。
4. 在集合框架中,每个具体的集合类都实现了相应的接口,并提供了一套通用的方法来操作集合。
例如,ArrayList是List接口的一个实现类,它使用数组来存储元素,并提供了一系列方法来添加、删除、查找和遍历列表中的元素。
HashSet是Set接口的一个实现类,它使用哈希表来存储元素,并提供了一套方法来添加、删除和查找集合中的元素。
5. Java集合框架还提供了一些算法和工具类,可以用于对集合进行排序、查找和操作等操作。
例如,Collections类提供了一系列静态方法,可以对集合进行排序、查找和复制等操作。
Arrays类提供了一系列静态方法,可以对数组进行排序、查找和复制等操作。
这些算法和工具类可以大大简化集合的处理过程,并提高开发效率。
总结:Java集合是一种用于存储和操作一组对象的数据结构,它提供了一种更高级别的抽象,可以方便地进行添加、删除、查找和遍历操作。
Java集合框架是Java编程语言提供的一组接口、类和算法,用于实现各种集合类型,并提供了一种标准化的方式来处理集合。
java集合
比较指定的对象与列表是否相等。 E get(int index)
返回列表中指定位置的元素。
int indexOf(Object o)
返回列表中首次出现指定元素的索引,如果列表不包含此 元素,则返回 -1。
Iterator iterator()
<E>
返回以正确顺序在列表的元素上进行迭代的迭代器。
int lastIndexOf(Object o)
List接口和LinkedList类 3-3
• 第二步:具体实现
public clas1s、Fir添stL加eve头lTit条leD、B3以{ 及最末条新闻标题 public static void main(String[] args) { FirstL2ev、elT获itle取car头= n条ew、Fir以stL及eve最lTit末le(1条, "汽新车闻", "标管理题员", new Date()); FirstLevelTitle medical = new FirstLevelTitle(2, "医学", "管理员",new Date()); 3、删除头条、以及最末条新闻标题
iterator() 返回在此 collection 的元素上进行迭代的迭代器。
remove(Object o) 从此 collection 中移除指定元素的单个实例,如果存在的话(可选操
作)。 size()
返回此 collection 中的元素数。 toArray()
返回包含此 collection 中所有元素的数组。
返回列表中最后出现指定元素的索引,如果列表不包含此 元素,则返回 -1。
List常用方法
JAVA集合试题库完整
集合一、第一模块:知识点讲解图解集合Set HashMap TreeMapLinkedHashMap ArrayList LinkList HashSet TreeSet LinkedHashSet Comparable comparator1、集合的由来:我们学的语言是面向对象的语言,为了方便对多个对象进行操作,我们就必须把对象存储。
而要存储多个对象,就不能是一个基本变量,而应该是一个容器类型的变量。
这样就引入了集合。
*以前接触过得容器:数组、StringBuffer 等由于StringBuffer 的结果是一串字符,不一定能满足我们的要求,所以我们只能选择数组,这就是对象数组。
而对象数组不能适应变化的需求,因为数组的长度是固定。
2、数组和集合的区别①长度区别集合的长度可变数组长度不可变②内容区别集合可以存储不同类型的元素数组存储的是同一种类型的元素③元素的数据类型问题数组可以存储基本数据类型也可以存储引用数据类型集合只能存储引用类型,Java提供了不同的集合类,这多个集合的数据结构不同*数据结构:数据的存储方式Java提供的多种集合类,他们的数据结构不同,但是,他们肯定有共性的内容(存储、获取、判断等)。
通过不断的向上提取,我们就能够得到一个集合的继承体系结构图。
把上面这段话转化为图形的形式:collectionArrayList Vector LinkedList HashSetTreeSet通过这个图可以清楚的理解集合现在我们从最低层开始学习一、Collection(接口Java.util )1、功能:①:添加boolean add(Object obj) 添加一个元素boolean addAll(Collection c)添加一个集合的元素②:删除void clear() 移除所有元素boolean remove(Object obj) 移除一个元素boolean removeAll(Collection c)移除一个集合的元素③:判断boolean cotains(Object o)判断集合中是否包含指定元素boolean containsAll(Collection c)判断集合中是否包含指定集合Collection c1=new ArrayList();c1.add("hello");c1.add("java");ArrayList();"containsAll:"System.out.println(c1);System.out.println(c2);打印结果:containsAll:falsec1[hello, java, world]c2[a, c, world]boolean isEmpty() 判断是否是空④获取Iterator<E> iterator()⑤长度int size()⑥交集功能(了解)boolean retainAll(Collection c)交集两个集合中都有的元素,返回值的意思?假设有两个集合A,B。
java中集合知识点总结
java中集合知识点总结1. Collection接口Collection接口是Java中集合类的基本接口,它定义了一组通用的操作方法,包括添加、删除、查找等操作。
Collection接口有三个主要的子接口:List、Set和Queue。
(1) ListList是一种有序的集合,它允许重复的元素,并且可以按照索引访问元素。
List接口中有常用的实现类:ArrayList、LinkedList和Vector。
其中,ArrayList是基于数组实现的,它支持快速的随机访问和插入操作;LinkedList是基于双向链表实现的,它支持快速的插入和删除操作;Vector是线程安全的类,它支持并发访问。
(2) SetSet是一种不允许重复元素的集合,它用来存储唯一的元素。
Set接口中有常用的实现类:HashSet、LinkedHashSet和TreeSet。
其中,HashSet是基于哈希表实现的,它提供了快速的查找和插入操作;LinkedHashSet是基于哈希表和链表实现的,它保持了元素的插入顺序;TreeSet是基于红黑树实现的,它提供了有序的集合。
(3) QueueQueue是一种先进先出的集合,它用来存储元素,并且支持插入和删除操作。
Queue接口中有常用的实现类:LinkedList和PriorityQueue。
其中,LinkedList可以作为Queue来使用,它支持快速的插入和删除操作;PriorityQueue是基于堆实现的,它提供了优先级队列的功能。
2. Map接口Map接口是Java中的映射表,它用来存储键值对的数据。
Map接口中有常用的实现类:HashMap、LinkedHashMap、TreeMap和Hashtable。
其中,HashMap是基于哈希表实现的,它提供了快速的查找和插入操作;LinkedHashMap是基于哈希表和链表实现的,它保持了键值对的插入顺序;TreeMap是基于红黑树实现的,它提供了有序的映射表;Hashtable是线程安全的类,它支持并发访问。
Java中常用的集合类有哪些?它们的使用场景是什么?
Java中常用的集合类有哪些?它们的使用场景是什么?Java作为目前最为流行的编程语言之一,其优越的面向对象编程思想和强大的类库使其成为了广大编程爱好者和专业开发者的首选语言之一。
在Java开发中,常用的集合类具有广泛的应用场景,可以大大简化我们代码的编写和维护。
在本篇文章中,我们将介绍Java中常用的集合类有哪些,它们的使用场景是什么,以及如何选择合适的集合类来应对各种场景。
一、Java中常用的集合类Java中常用的集合类包括List、Set、Map等,具体如下:1.ListList是Java中最基础和最常用的集合类之一,它是一个有序的集合,可以存储重复的元素。
List提供了一系列的方法用来操作列表中的元素,如添加、删除、获取、修改等。
常见的List有ArrayList 和LinkedList。
2.SetSet是Java中的另一个基础集合类,它是一个无序的集合,不允许存储重复的元素。
Set提供了一系列的方法用来操作集合中的元素,如添加、删除、获取等。
常见的Set有HashSet、TreeSet。
3.MapMap是Java中常用的映射关系集合,它存储键值对,支持通过键来访问值。
Map提供了一系列的方法用来操作映射关系,如添加、删除、获取、修改等。
常见的Map有HashMap、TreeMap、ConcurrentHashMap等。
二、Java中常用集合类的使用场景不同的集合类有不同的使用场景,我们需要根据具体的业务需求来选择合适的集合类。
下面我们来介绍几种常见的使用场景及其对应的集合类。
1.需要随机访问元素的情况:ArrayListArrayList是Java中常用的集合类之一,它支持随机访问,通过索引访问元素的时间复杂度为O(1),是处理元素数量较大的情况下的较好选择。
2.需要频繁插入或删除元素的情况:LinkedListLinkedList是另一个常用的集合类,它支持快速的插入和删除操作,通过节点互相关联实现。
java集合继承关系
java集合继承关系
Java集合框架中的继承关系如下所示:
1. Collection接口是所有集合接口的根接口,它继承了Iterable
接口。
2. List接口和Set接口都继承自Collection接口。
3. Queue接口继承自Collection接口,它定义了队列的行为。
4. Deque接口继承自Queue接口,但它还定义了双端队列的操作。
5. Map接口是所有映射接口的根接口。
6. SortedSet接口和SortedMap接口都继承自Set接口和Map接口,分别定义了排序集合和排序映射的操作。
7. NavigableSet接口和NavigableMap接口都继承自SortedSet接
口和SortedMap接口,分别定义了带导航功能的排序集合和排序映射的操作。
8. AbstractCollection、AbstractSet、AbstractList、AbstractSequentialList、AbstractQueue和AbstractMap是实现集合和
映射的抽象类,它们提供了一些基本的实现。
9. ArrayList和LinkedList都实现了List接口,它们提供了不同
的列表实现方式。
10. HashSet、LinkedHashSet和TreeSet都实现了Set接口,它们
提供了不同的集合实现方式。
11. HashMap、LinkedHashMap和TreeMap都实现了Map接口,它们提供了不同的映射实现方式。
java中集合案例
java中集合案例一、集合概念介绍集合是Java编程中一种非常重要的数据结构,它用于存储一组对象。
集合中的对象之间不存在序号关系,也不保证元素的顺序。
Java提供了多种集合类,如List、Set、Map等,可以根据实际需求选择合适的集合类进行使用。
二、Java中常用集合类概述1.List:List是一种有序、可重复的集合,内部采用数组实现。
常用的List 实现类有ArrayList、LinkedList等。
2.Set:Set是一种无序、不可重复的集合,内部采用红黑树实现。
常用的Set实现类有HashSet、TreeSet等。
3.Map:Map是一种键值对集合,内部采用哈希表实现。
Map中的键和值可以是任意类型的对象,常用的Map实现类有HashMap、TreeMap等。
4.其他集合类:Java还提供了许多其他类型的集合,如Queue(队列)、Deque(双端队列)、LinkedHashMap(有序映射)等。
三、集合案例分析与应用1.案例一:使用ArrayList实现学生成绩管理```javaimport java.util.ArrayList;import java.util.List;public class Student {private String name;private int score;public Student(String name, int score) { = name;this.score = score;}public String getName() {return name;}public void setName(String name) { = name;}public int getScore() {return score;}public void setScore(int score) {this.score = score;}@Overridepublic String toString() {return "Student{" +"name="" + name + """ +", score=" + score +"}";}}public class StudentManager {private List<Student> students = new ArrayList<>();public void addStudent(Student student) {students.add(student);}public void removeStudent(String name) {students.removeIf(student ->student.getName().equals(name));}public void printStudents() {for (Student student : students) {System.out.println(student);}}}```2.案例二:使用HashSet去除重复元素```javaimport java.util.HashSet;import java.util.List;import java.util.Set;public class Main {public static void main(String[] args) {Set<String> set = new HashSet<>();set.add("apple");set.add("banana");set.add("apple");System.out.println(set); // 输出:[apple, banana] }}```3.案例三:使用Map实现学生成绩查询```javaimport java.util.HashMap;import java.util.Map;public class Student {private String name;private int score;// 省略构造方法、getter和setter方法}public class StudentManager {private Map<String, Student> students = new HashMap<>();public void addStudent(String name, Student student) {students.put(name, student);}public Student getStudent(String name) {return students.get(name);}public void removeStudent(String name) {students.remove(name);}}```四、总结与建议集合在Java编程中有着广泛的应用,熟练掌握各类集合的使用方法可以提高代码的可读性和实用性。
集合面试题java
集合面试题java1. 什么是集合?集合是Java中的一个常用数据结构,用来存储一组有序或无序的数据。
它是由一组固定大小的元素构成,可以添加、删除和访问其中的元素。
Java中的集合类被包含在java.util包中。
2. Java中有哪些类型的集合?Java中有三种类型的集合,分别是List、Set和Map。
- List:可以存储有序的元素,可以包含重复的元素。
常见的List类有ArrayList和LinkedList。
- Set:主要用于存放无序、不可重复的元素,不存在索引。
常见的Set类有HashSet和TreeSet。
- Map:用于存储键值对,每个存储的元素包含两部分,即键和值。
常见的Map类有HashMap和TreeMap。
3. ArrayList和LinkedList的区别是什么?ArrayList是基于数组实现的集合,具有一定的随机访问性能,可以快速获取指定位置的元素。
但是它在插入和删除元素时效率相对较低,需要重新排列数组。
而LinkedList是基于链表实现的集合,插入和删除元素时速度比ArrayList要快,但是获取指定位置的元素需要遍历整个链表,效率相对较低。
4. HashSet和TreeSet的区别是什么?HashSet是基于哈希表实现的集合,不保证元素的顺序,具有快速的添加、删除和查找元素的能力。
但是它不支持对元素的有序遍历。
而TreeSet是基于红黑树实现的集合,对元素进行自然排序或者指定排序规则进行排序,可以通过迭代器对元素进行有序的遍历。
5. 什么是迭代器?迭代器是一种遍历集合元素的方式,用于逐个访问集合元素。
它是Java中的一个接口,包含常用的方法,如hasNext()和next()。
Iterator 接口是Java中访问集合元素的标准方式,可以访问所有实现了java.util.Collection接口的集合类。
6. 如何遍历一个集合?Java中提供了三种遍历集合的方式,分别是for-each循环、迭代器和Java 8中的Lambda表达式。
Java集合排序及java集合类详解(Collection、List、Map、Set)
Java集合排序及java集合类详解(Collection, List, Set, Map)摘要内容Java里面最重要,最常用也就是集合一部分了。
能够用好集合和理解好集合对于做Java程序的开发拥有无比的好处。
本文详细解释了关于Java中的集合是如何实现的,以及他们的实现原理。
关键字:Collection , List ,Set , Map , 集合,框架。
目录1 集合框架 (2)1.1 集合框架概述 (2)1.1.1 容器简介 (2)1.1.2 容器的分类 (4)1.2 Collection (6)1.2.1 常用方法 (6)1.2.2 迭代器 (8)1.3 List (10)1.3.1 概述 (10)1.3.2 常用方法 (11)1.3.3 实现原理 (15)1.4 Map (18)1.4.1 概述 (18)1.4.2 常用方法 (18)1.4.3 Comparable 接口 (23)1.4.4 实现原理 (25)1.4.5 覆写hashCode() (29)1.5 Set (33)1.5.1 概述 (33)1.5.2 常用方法 (34)1.5.3 实现原理 (38)1.6 总结:集合框架中常用类比较 (39)2 练习 (40)3 附录:排序 (41)1集合框架1.1集合框架概述1.1.1容器简介到目前为止,我们已经学习了如何创建多个不同的对象,定义了这些对象以后,我们就可以利用它们来做一些有意义的事情。
举例来说,假设要存储许多雇员,不同的雇员的区别仅在于雇员的身份证号。
我们可以通过身份证号来顺序存储每个雇员,但是在内存中实现呢?是不是要准备足够的内存来存储1000个雇员,然后再将这些雇员逐一插入?如果已经插入了500条记录,这时需要插入一个身份证号较低的新雇员,该怎么办呢?是在内存中将500条记录全部下移后,再从开头插入新的记录? 还是创建一个映射来记住每个对象的位置?当决定如何存储对象的集合时,必须考虑如下问题。
Java集合知识测试
集合部分测试题考试宣言:同学们,考试考多少分不是我们的目的排在班级多少的名次也不是我们的初衷我们考试的目的是要通过考试中的题目,检查大家在这段时间的学习中,是否已经把需要掌握的知识掌握住了,如果哪道题目你不会做,又或者做错了,那么不用怕,考完试后,导师讲解的时候你要注意听那时候学会了,记住了,也一样不影响你高薪就业本套题共40道不定项选择题,其中单选30道,多选10道;单选2分/题,多选4分/题;多选题不全对半分,全对满分;1.Java中的集合类包括ArrayList、LinkedList、HashMap等类,下列关于集合类描述正确的是AB ABDaArrayList和LinkedList均实现了List接口bArrayList的查询速度比LinkedList快c添加和删除元素时,ArrayList的表现更佳dHashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值2.LinkedList类的特点是Ba)查询快b)增删快c)元素不重复d)元素自然排序3.关于迭代器说法错误的是Da)迭代器是取出集合元素的方式b)迭代器的hasNext方法返回值是布尔类型c)List集合有特有迭代器d)next方法将返回集合中的上一个元素4.单列集合的顶层接口是C Ba)b)java.util.Collectionc)d)5.实现下列哪个接口,可以启用比较功能Da)Runnable接口b)Iterator接口c)Serializable接口d)Comparator接口6.对于增强for循环说法错误的是Aa)增强for循环可以直接遍历Map集合//间接b)增强for循环可以操作数组c)增强for循环可以操作Collection集合d)增强for循环是JDK1.5版本后出现的7.下面代码运行的结果是AArrayList<String>al=newArrayList<String>;al.addtrue;al.add123;al.add“abc”;a)编译失败b)true,123c)true,123,abc;d)abc;8.将Map集合中的键存储到Set集合的方法是Ca)entrySetb)getc)keySetd)put9.ArrayList和Vector的区别说法正确的是Ba)ArrayList是线程安全的,Vector是线程不安全b)ArrayList是线程不安全的,Vector是线程安全的c)ArrayList底层是数组结构,Vector底层是链表结构d)ArrayList底层是链表结构,Vector底层是数组结构10.Set集合的特点是A Ba)元素有序b)元素无序,不存储重复元素c)存储重复元素d)Set集合都是线程安全的11.ArrayList的初始化内容如下:ArrayList<String>list=new ArrayList<>;list.add"java";list.add"aaa";list.add"java";list.add"java";list.add"bbb";下面可以删除list中所有的“java”的代码是AbAaforint i=list.size-1;i>=0;i--{if"java".equalslist.geti{list.removei;}}bforint i=0;i<list.size;i++{if"java".equalslist.geti{list.removei;}}clist.remove"java";d list.removeAll"java";12.Vector类的特点是Aa)线程同步b)线程不同步c)增删快d)底层是链表结构13.使用TreeSet的无参构造创建集合对象存储元素时,该元素必须Aa)实现Comparable接口b)有main方法c)有get和set方法d)实现Serializable接口14.下列方法不是Collection通用方法的有Caiteratorbaddcgetdremove15.下面的代码用于输出字符数组ch中每个字符出现的次数publicstaticvoid mainStringargs{char ch={'a','c','a','b','c','b'};HashMapmap=new HashMap;forint i=0;i<ch.length;i++{//位置①}System.out.printlnmap;}应该填入位置①的代码是,不允许使用工具运行程序D CD aif map.containschi{map.putchi,map.getchi+1;}else{map.putchi,1;}bif map.containschi{map.putchi,Integermap.getchi+1;}else{map.putchi,1;}cif map.containsKeychi{map.putchi,int map.getchi+1;}else{map.putchi,1;}dif map.containsKeychi{map.putchi,Integermap.getchi+1;}else{map.putchi,1;}16.对于HashMap集合说法正确的是Ca)底层是数组结构b)底层是链表结构c)可以存储null值和null键d)不可以存储null值和null键17.下面的类是同步的有BDabcd18.Collections工具类中的binarySearch方法描述正确的是Ba)binarySearch方法只能操作Set集合b)binarySearch方法只能操作List集合c)binarySearch方法只能操作Map集合d)binarySearch可以操作所有的集合19.下面关于HashMap和Hashtable的区别,说法正确的是CDaHashtable线程不安全,效率高bHashMap线程安全,效率低cHashMap允许null键和值dHashtable不允许null键和值20.将集合转成数组的方法是b Ca)asListb)toCharArrayc)toArrayd)copy21.按照课堂要求重写equal s和hashCode后,下面关于这两个方法说法正确的是bca两个对象的hashCode值相同,那么他们调用equals方法返回值一定为trueb两个对象的hashCode值相同,那么他们调用equals方法返回值可以为falsechashCode值一般与对象的成员变量有关d只要重写equals方法,就一定要重写hashCode方法22.父类声明:publicclassFXfather<T>{….}23.现在要定义一个Fxfather的子类son,下面定义错误的是b DaclassSonextendsFXfather<String>{}bclassSon<T,V>extendsFXfather<T>{}cclassSon<String>extendsFXfather<String>{}dclassSon<String>extendsFXfather<T>{}24.ArrayList类的底层数据结构是aa)数组结构b)链表结构c)哈希表结构d)红黑树结构25.应用程序的main方法中有以下语句请参看API文档Hashtablehashtable=newHashtable;hashtable.put"100","aaa";hashtable.put"200","bbb";hashtable.put"300","ccc";+hashtable.get"200".toString+hashtable.get"100".toString;则输出的结果是Da编译失败bbbbccccdcccbbbaaa26.关于将int数组使用系统提供的API转成集合后,不可以进行的操作是c Aa)增加集合中的元素b)迭代集合c)修改集合中的元素d)获取集合中元素的个数27.下面代码运行的结果是BArrayList<String>al=newArrayList<>;al.add"s";al.add"ddd";al.add"true";a)编译失败b)s,ddd,truec)trued)运行报错28.关于HashMap集合说法正确的是aba)HashMap集合是双列集合b)HashMap集合不允许存储重复键c)HashMap集合不允许存储重复值d)HashMap集合线程是安全的29.题示代码的功能为:循环遍历输出Map当中的每一个元素Mapmap=newHashMap;map.put“jessica”,100;map.put“tom”,200;map.put“den”,300;Set位置①set=位置②;for位置③per:set{ +":"+per.getValue; }下列每个选项中分别填入上面三个位置,正确的是da<Entry>map.keySetEntryb<Entry<Integer,String>>map.entrySetEntryc<Map.Entry<String,Integer>>map.keySetMap.Entryd<Map.Entry<String,Integer>>map.entrySetMap.Entry30.下面类或者接口中,不属于集合体系的是aabcd31.关于Map.Entry接口说法错误的是ca)具有getkey方法b)具有getValue方法c)具有keySet方法d)具有setValue方法32.下列代码publicclass Base{privatevoid test{StringaStr="_One_";StringbStr=aStr;bStr=aStr.trim;System.out.println""+aStr+","+bStr+"";}staticpublicvoid mainStringa{new Base.test;}}其中“_”表示一个空格,运行的结果是baOne,_One_b_One_,OnecOne,Oned_One_,_One_33.在Java中,a类可用于创建链表数据结构的对象aLinkedListbArrayListcCollectiondHashMap34.以下能以键_值对的方式存储对象的接口是abc Babcd35.在我们所学知识中,下面哪几项是接口abcdajava.util.Mapbjava.util.Collectioncjava.util.Listdjava.util.Set36.List集合的遍历方式有如下哪几种abca)Iterator迭代器实现b)增强for循环实现c)get和size方法结合实现d)get和length方法结合实现37.题示代码的功能为:对于一个存放Person对象的ArrayList进行循38.环遍历;并输出每个Person对象的idCard和userName;publicclassPerson{ privateLongidCard;pirvateStringuserName; //以下是getter和setter方法//省略}Listlist=newArrayList;Personp1=newPerson;p1.setIdCardnewLong1001;p1.setUserName“terry”;Personp2=newPerson;p2.setIdCardnewLong1002;p2.setUserName“tom”;list.addp1;list.addp2;for位置①{ }那么位置①处的代码为daListlist:personbListlist:PersoncPersonperson:ListdPersonperson:list39.下面代码的运行结果是dArrayListal=newArrayList;al.add“a”;al.add“b”;al.add“c”;Iteratorit=al.iterator;whileit.hasNext{Strings=Stringit.next;ifs.equals“c”{al.add“c1”;}}a)a,b,cb)c1c)a,b,c,c1d)抛出ConcurrentModificationException异常40.下面关于泛型的说法不正确的是da泛型的具体确定时间可以是在定义方法的时候b泛型的具体确定时间可以是在创建对象的时候c泛型的具体确定时间可以是在继承父类定义子类的时候d泛型就是Object类型41.下面关于Collection和Collections的区别错误的是b ABCaCollections是集合顶层接口bCollection是针对Collections集合操作的工具类cList、Set、Map都继承自Collection接口dCollections是针对Collection集合操作的工具类42.关于泛型的说法正确的是c ABCa)泛型是JDK1.5出现的新特性b)泛型是一种安全机制c)使用泛型避免了强制类型转换d)使用泛型必须进行强制类型转换。
java集合知识点总结
java集合知识点总结Java集合是Java编程中的一个重要的部分,它的理解和使用对编程者来说是必不可少的。
它为开发者提供了一种更好地操作和管理数据的方法,大大提高了应用开发所需的效率。
本文将简要介绍Java 集合的相关概念与特性,并通过实例来更好地了解其中的知识点。
一、Java集合介绍Java集合(Collection)包括一组对象(Object),它们可以是基本类型、对象或数组,它们可以用来存储,操作和管理程序中的数据,充分体现了“面向对象”编程的抽象能力。
Java集合的特点有:(1)集合是一种容器,可以存放任何类型的对象,它是一种非常抽象的概念,可以把一堆数据项放入集合对象中;(2)集合可以自动管理里面存放的对象,提供了统一的接口来访问和修改集合中的对象,从而避免了繁琐的操作;(3)集合的每个元素都有一定的顺序,也就是说可以通过顺序来访问它们;(4)集合还可以通过索引来访问元素,而且允许程序在集合中搜索元素,这对于快速定位某个元素是非常有用的;(5)集合可以保持对象的顺序,新加入的对象总是会在特定的位置被存放,从而保证了集合中元素的顺序;(6)集合可以保持在一个容器中的唯一性,允许只有一个唯一的元素存在,因此可以用来实现不出现重复元素的数据结构。
二、Java集合类Java集合类提供了一系列容器来存储、操作和管理不同类型的数据。
基本上,Java提供的集合类可以分为两个基本类型:集合和映射。
集合:集合是用来存储元素的一种容器,它提供了一系列的方法,可以用来添加、移除和检索容器中的对象。
在Java中,拥有两个基本的集合类型:线性集合和非线性集合。
线性集合:线性集合是指那些元素之间存在有序关系的集合,元素在线性集合中可以通过索引来访问。
它主要包括List和Set,其中List是有序的集合,而Set则是无序的集合。
非线性集合:非线性集合是指元素之间没有有序关系的集合,它提供的操作更为灵活,可以通过指定的键来访问元素。
java集合总结
java集合总结一、数组、集合数组、集合:都是一种容器,用一个对象管理多个对象;数组:不能自动增长;只能存放同类型的元素集合:能自动扩容;部分集合允许存放不同类型的元素;二、学习这些集合类要把握哪些东西:1〕怎样得到〔选择〕集合对象;2〕怎样添加元素3〕怎样删除元素4〕怎样循环遍历没一个元素三、list、set、mapcollection:父接口;Set:接口一个实现类:HashSetList:接口三个实现类:LinkedList,Vector,ArrayListSortedSet:接口实现类:TreeSet1、List:List:有序列表,允许存放重复的元素;实现类:ArrayList:数组实现,查询快,增删慢,线程担心全,轻量级;下标也是从0开头;LinkedList:链表实现,增删快,查询慢Vector:数组实现,线程平安,重量级2.Set:无序集合,不允许存放重复的元素;实现类HashSet:equals返回true,hashCode返回相同的整数;哈希表;子接口SortedSet:对Set排序实现类:TreeSet:二叉树实现的;看API:E泛型:表示一个对象;Iterator:接口,迭代器;java.util;hasNext();next();remove();Iterable:可迭代的,访问的;ng;实现了可迭代的接口就可以用迭代的方式访问;只需实现iterator();方法即可;Iteratoriterator();三种循环的访问方式:只有实现了Iterable接口的才能用第三种;能用其次种的也肯定能用第三种;ArrayList:自动扩容,是数组照搬过来的;3.MapHashMap:键值对,key不能重复,但是value可以重复;key 的实现就是HashSet;value对应着放;HashSet的后台有一个HashMap;初始化后台容量;只不过生成一个HashSet的话,系统只供应key的访问;假如有两个Key重复,那么会掩盖之前的;Hashtable:线程平安的Properties:java.util.Properties;key和value都是String 类型,用来读配置文件;HashMap与Hashtable区分:HashMap线程担心全的,允许null作为key或value;Hashtable线程平安的,不允许null作为key或value;TreeMap:对key排好序的Map;key就是TreeSet,value对应每个key;key要实现Comparable接口或TreeMap有自己的构造器;HashSet:remove(Objecto)的原则看这个对象O的Hashcode和equals是否相等,并不是看是不是一个对象;定义一个Map;key是课程名称,value是Integer表示选课人数;map.put(cou,map.get(cou)+newInteger(1));四、Hashtable、Properties1,Hashtable:实现了Map接口,此类实现一个哈希表,作用和HashMap相同。
java集合面试八股文
java集合面试八股文Java集合是Java中非常重要的一部分,也是Java面试中经常被问到的一个知识点。
在Java集合中,有很多种不同的数据结构,每种数据结构都有其特点和适用场景。
在面试中,面试官通常会问到一些Java 集合的基础知识,以及一些高级的使用技巧。
下面是Java集合面试中常见的八股文:一、Java集合框架的体系结构Java集合框架是Java中非常重要的一部分,它提供了一系列的接口和类,用于存储和操作数据。
Java集合框架主要分为三个部分:Collection接口、Map接口和Iterator接口。
其中,Collection接口是所有集合类的根接口,Map接口是所有映射类的根接口,Iterator 接口用于遍历集合中的元素。
二、Java集合中常用的数据结构Java集合中常用的数据结构有:List、Set、Map和Queue。
List是一个有序的集合,可以存储重复的元素;Set是一个无序的集合,不允许存储重复的元素;Map是一种映射关系,可以存储键值对;Queue 是一种队列,可以实现先进先出的操作。
三、ArrayList和LinkedList的区别ArrayList和LinkedList都是List接口的实现类,它们的主要区别在于底层数据结构的不同。
ArrayList底层使用的是数组,可以随机访问元素,但是插入和删除元素的效率比较低;LinkedList底层使用的是链表,插入和删除元素的效率比较高,但是随机访问元素的效率比较低。
四、HashSet和TreeSet的区别HashSet和TreeSet都是Set接口的实现类,它们的主要区别在于底层数据结构的不同。
HashSet底层使用的是哈希表,元素的存储顺序是无序的,不允许存储重复的元素;TreeSet底层使用的是红黑树,元素的存储顺序是有序的,不允许存储重复的元素。
五、HashMap和TreeMap的区别HashMap和TreeMap都是Map接口的实现类,它们的主要区别在于底层数据结构的不同。
java集合使用场景
java集合使用场景Java集合是Java编程中常用的数据结构,它提供了一组方法和类来处理和存储数据。
Java集合框架主要包括List、Set、Map、Queue等接口和它们的实现类,每个类都有其自身的使用场景。
下面将介绍一些常见的Java集合使用场景。
1. List集合:List是有序、可重复的集合。
常用的List实现类有ArrayList和LinkedList。
使用场景包括但不限于:- 当需要按照特定顺序存储多个元素,并且需要能够随机访问元素时,可以使用ArrayList。
- 当需要频繁执行插入、删除操作,而不是随机访问元素时,可以使用LinkedList。
2. Set集合:Set是无序、不可重复的集合。
常用的Set实现类有HashSet和TreeSet。
使用场景包括但不限于:- 当需要存储一组唯一的元素,并且不关心元素的顺序时,可以使用HashSet。
- 当需要按照一定顺序存储元素,并且不希望有重复元素时,可以使用TreeSet。
3. Map集合:Map是存储键值对的集合,每个键对应一个唯一的值。
常用的Map实现类有HashMap和TreeMap。
使用场景包括但不限于:- 当需要根据键快速查找对应的值时,可以使用HashMap。
- 当需要按照键的顺序存储键值对时,可以使用TreeMap。
4. Queue集合:Queue是一种特殊的集合,它遵循先进先出(FIFO)的原则。
常用的Queue实现类有LinkedList和ArrayDeque。
使用场景包括但不限于:- 当需要按照先后顺序处理元素,并且从队列的一端插入、另一端删除元素时,可以使用LinkedList。
- 当需要高效地在队列两端插入、删除元素时,可以使用ArrayDeque。
除了以上常见的使用场景外,还可以根据具体需求选择其他集合类。
例如,如果需要对集合进行高效的查找操作,可以使用HashSet或TreeSet实现类;如果需要对集合进行高效的插入、删除操作,可以使用LinkedList或ArrayDeque实现类;如果需要对集合进行高效的键值对查找或按照键排序的操作,可以使用HashMap或TreeMap实现类等。
java 集合 分割 穷举
java 集合分割穷举摘要:1.Java集合概述2.集合分割方法3.穷举搜索在集合分割中的应用正文:Java集合概述Java集合框架是Java编程语言中一个极其重要的基础架构,它为程序员提供了一组丰富的工具,用于处理数据结构和算法。
集合框架包括两大类:List(列表)和Set(集合)。
List是一种有序的数据结构,允许存储重复元素;而Set则是一种不允许存储重复元素的无序数据结构。
集合分割方法在处理集合时,有时需要将集合进行分割。
分割的意思是将一个集合分成多个子集。
在Java中,可以使用以下方法对集合进行分割:1.使用`Collections.partition()`方法:这个方法将集合划分为两个子集,第一个子集包含所有小于等于指定元素的元素,第二个子集包含所有大于指定元素的元素。
2.使用`Collections.sort()`方法:对集合进行排序后,可以使用`Collections.split()`方法将有序集合划分为两个子集,第一个子集包含所有小于等于指定元素数量的元素,第二个子集包含所有大于指定元素数量的元素。
3.使用`ArrayList`或`LinkedList`的`subList()`方法:这个方法返回一个包含指定范围内元素的子列表。
穷举搜索在集合分割中的应用在某些情况下,我们需要根据某些条件对集合进行分割。
这时,可以使用穷举搜索算法来遍历集合,并根据条件来判断每个元素属于哪个子集。
例如,假设我们有一个包含整数的集合,需要将集合分割成两个子集,其中一个子集包含所有偶数,另一个子集包含所有奇数。
我们可以使用以下步骤:1.初始化两个空集合,分别用于存储偶数和奇数。
2.遍历集合中的每个元素。
3.如果元素是偶数,将其添加到偶数集合中;否则,将其添加到奇数集合中。
4.返回偶数集合和奇数集合。
通过以上方法,我们可以实现根据条件对集合进行分割的需求。
java集合知识点总结
java集合知识点总结集合是JAVA中非常重要的一种数据结构,它是对象的有序集合。
它提供了一系列的API用来操作集合,开发者可以用来存取、添加、移除、排序、搜索数据,可以大大简化编程的工作量。
JAVA中有很多不同的集合类,如ArrayList、Vector、LinkedList、HashSet、HashMap、TreeSet等,它们有着不同的特性,下面着重总结一下它们各自的知识点:1. ArrayList:ArrayList使用可变数组存储数据,是最常用的List实现类,它的性能优于Vector,且不支持线程安全操作,它允许null值和重复数据。
2. Vector:Vector是线程安全的,它内部也使用可变数组存储数据,但它与ArrayList实现机制不同。
它是同步的,允许null值和重复数据,其扩容机制是可以控制的。
3. LinkedList:LinkedList是双向链表,它不支持索引查询操作,所以更适合实现队列、栈等数据结构,同时它也是不同步的,允许null值和重复数据。
4. HashSet:HashSet是基于HashMap实现的,它不允许存放重复的元素,因为它的底层使用的是HashMap,所以它的性能很快,HashSet也不同步,不支持索引,允许null值。
5. HashMap:HashMap可以将键映射到值,它是由Hashtable派生而来的不同步的Map,这个数据结构允许键和值都是null。
6. TreeSet:TreeSet是基于TreeMap实现的,它将元素存放到二叉树结构中,TreeSet不支持索引查询,它是同步的,不允许重复元素,但是可以允许null值。
上述就是java中各种集合类的基础知识点,只有深入学习了解了这些基础知识点,才能够更好地应用它们解决实际开发中的问题。
集合类初始化时需要指定容量大小,大小越小则需要拓展的次数越多,程序效率越低,反之,大小越大,则拓展的次数越少,效率越高。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6. 对于Java集合,还有一个实用类,即java.util.Collections,它的一部分方法专门用于操纵List类型集合,还有一部分方法可用于操纵所有的Collection类型或Map类型集合。
二、Collection和Iterator接口
1. Collection接口的方法 方法
三、Set(集)
1. Set接口主要有两个实现类:HashSet和TreeSet。HashSet类有一个子类LinkedHashSet类,它不仅实现了哈希算法,而且实现了链表数据结构。TreeSet类实现了SortedSet接口,具有排序功能。此外还有一个以数组为基础实现的Set类CopyOnWriteArraySet。
向列表中插入一个元素
hasNext()
判断列表中是否还有下一个元素
hasPrevious()
判断列表中是否还有上一个元素
next()
返回列表中的下一个元素
previous()
返回列表中的上一个元素
4. java.util.Arrays类的asList()方法能够把一个java数组包装为一个List对象,这个List对象代表固定长度的数组,所有对List对象的操作都会被作用到底层的java数组,因此不能调用这种List对象的add()和remove()方法。
while(it.hasNext()){
Customer customer = it.next();
System.out.println(customer.getName()+" "+customer.getAge());
}
}
}
四、List(列表)
1. List中的元素以线性方式存储,集合中允许存放重复对象。List接口的主要的实现类有ArrayList(长度可变的数组)和LinkedList(链表)。并且LinkedList单独具有addFirst()、addLast()、getFirst()、getLast()、removeFirst()、removeLast()方法,这些方法使得LinkedList可以作为堆栈、队列和双向队列来使用。
返回一个Iterator对象,可用它来遍历集合中的元素
boolean remove(Object o)
从集合中删除一个对象的引用
int size()
返回集合中元素的数目
Object[] toArray()
返回一个数组,该数组包含集合中的所有元素
boolean isEmpty()
4. <? extends Object> 对集合类的范型设定了上限,表示接受Object类型及其子类型。
<? super String> 对集合类的范型设定了下限,表示接受String类型及其父类型。
5. 遍历集合可使用“for(Type t : c){…}”语法,其中c表示需要遍历的集合,Type表示集合内元素的类型,t引用每次从集合中取出的当前元素。
7. 最适合TreeSet排序的是不可变类。
8. TreeSet类支持客户化排序,可以先创建一个实现parator<Type>接口的类,<Type>指定被比较的对象的类型,Comparator有个compare(Type x,Type y)方法,用于比较两个对象的大小。当compare(x,y)的返回值大于0时,表示x>y,返回值小于0时,表示x<y,返回值等于0时,表示x等于y。示例代码如下: import parator;
Customer customer3 = new Customer("Mary",26);
set.add(customer1);
set.add(customer2);
set.add(customer3);
Iterator<Customer> it = set.iterator();
五、Map(映射)
1. Map的entrySet()方法返回一个Set集合,在这个集合中存放了Map.Entry类型的元素,每个Map.Entry对象代表Map中的一对键与值。
2. Map有两种比较常用的实现,HashMap和TreeMap,另外还有以链表和哈希表为基础实现的LinkedHashMap类。使用HashMap时,改写了equals()方法时,同时要改写hashCode()方法;TreeMap实现了SortedMap接口,能对键对象进行排序,支持自然排序和客户化排序。如果要对键进行客户化排序,可调用它的TreeMap(Comparator comparator)构造方法,参数comparator指定具体的排序方式。
if(x.getName().compareTo(y.getName()) > 0)
return -1;
if(x.getName().compareTo(y.getName()) <0 )
return 1;
return 0;
}
public static void main(String[] args) {
5. TreeSet支持两种排序方式:自然排序和客户化排序。在默认情况下,TreeSet采用自然排序ompareTo()方法比较集合中对象的大小 ,然后进行升序排列,这种排序方式称为自然排序。使用自然排序时,只能向TreeSet集合中加入同类型的对象,并且这些对象的类必须实现了Comparable接口。
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class CustomerComparator implements Comparator{
public int compare(Customer x,Customer y){
2. List只能对集合中的对象按索引位置排序,如果想要对List中的对象按其他特定方式排序,可以借助Comparator接口和Collections类中的sort方法。
3. List的listIterator()方法返回一个ListIterator对象,ListIterator接口继承了Iterator接口,此外还提供了专门操纵列表的方法: add()
描述
boolean add(Object o)
向集合中加入一个对象的引用
void clear()
删除集合中的所有对象,即不再持有这些对象的引用
boolean contains(Object o)
判断在集合中是否持有特定对象的引用
Iterator iterator()
Set<Customer> set = new TreeSet<Customer>(new CustomerComparator());
Customer customer1 = new Customer("Tom",15);
Customer customer2 = new Customer("Jack",16);
判断集合是否为空
注:Set接口和List接口继承了Collection接口,而Map接口没有继承Collection接口,所以Set对象和List对象可以调用以上方法,但Map对象不能调用以上方法。
2. Iterator接口中声明了以下方法:
a) hasNext():判断集合中的元素是否遍历完毕,如果没有,就返回true。
2. Set系列类的方法不支持插入和修改。同时Set集合中不能有重复的对象。
3. Set采用对象的equals()方法比较两个对象是否相等,即判断这个某个对象是否已经存在于集合中。
4. 当向集合中加入一个对象时,HashSet会调用对象的hashCode()方法来获得哈希码,然后根据这个哈希码进一步计算出对象在集合中的存放位置。
3. Map的keySet()方法返回集合中所有键对象的集合。
一、总结
1. 所有Java集合类都位于java.util包中,与Java数组不同,Java集合中不能存放基本数据类型,只能存放对象的引用。
2. Set、List、Map统称为Java集合。
3. 在将对象存储到集合类中时,为加快存储速度,要求被在座对象的类中必须覆盖equals()方法和hashCode()方法。即如果一个类重新实现了equals()方法,那么也应该重新实现hashCode()方法,并且保证当两个对象相等时,它们的哈希码也相同。
b) next():返回下一个元素。
c) remove():从集合中删除上一个由next()方法返回的元素。
3. 如果集合中的元素没有排序,Iterator遍历集合中元素的顺序是任意的,并不一定与向集合中加入元素的顺序保持一致。
4. 当通过Collection集合的iterator()方法得到一个Iterator对象后,如果当前线程或其他线程接着又通过Collection集合的一些方法对集合进行了修改操作(调用当前Iterator对象的remove()方法来修改集合除外),接下来访问这个Iterator对象的next()方法会导致java.util.ConcurrentModificationException运行时异常。