Java集合类
- 格式:ppt
- 大小:69.00 KB
- 文档页数:19
集合的概念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中的集合框架是一个包含了多个接口和类的层次结构,用于表示和操作一组对象。
集合框架包含了通用的集合接口和实现,以及特定的集合类和接口,如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集合类基础问题汇总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提供了几种有序集合的类,包括ArrayList、LinkedList、TreeSet和LinkedHashSet。
这些集合类都是Java集合框架的一部分,提供了不同的有序存储和操作元素的方式。
下面将详细介绍每个类的用法以及它们的优缺点。
1. ArrayList:ArrayList是基于数组实现的,提供了随机访问元素的能力。
它可以动态增长和缩小,内部实现了自动扩容机制。
在需要频繁查找和访问元素的场景下,ArrayList是首选。
以下是ArrayList的用法示例:```javaArrayList<String> list = new ArrayList<>(;list.add("A");list.add("B");list.add("C");System.out.println(list); // 输出: [A, B, C]list.remove(0);System.out.println(list); // 输出: [B, C]```2. LinkedList:LinkedList是基于链表实现的,提供了高效的插入和删除操作。
在需要频繁插入和删除元素的场景下,LinkedList是首选。
以下是LinkedList的用法示例:```javaLinkedList<String> list = new LinkedList<>(;list.add("A");list.add("B");list.add("C");System.out.println(list); // 输出: [A, B, C]list.removeFirst(;System.out.println(list); // 输出: [B, C]```3. TreeSet:TreeSet是基于红黑树实现的,提供了自然排序和自定义排序两种方式对元素进行排序。
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集合系列(⼀):集合的定义及分类1. 集合的定义什么是集合呢?定义:集合是⼀个存放对象的引⽤的容器。
在Java中,集合位于java.util包下。
2. 集合和数组的区别(⾯试常问)提到容器,就会想起数组,那么集合和数组的区别是什么呢?(这⾥是重点,⾯试可能问的⽐较多)1. 数组和集合都是Java中的容器2. 数组的长度是固定的,集合的长度是可变的3. 数组只能存储相同数据类型的数据,这⾥的数据类型可以是基本数据类型,也可以是引⽤类型4. 集合可以存储不同数据类型的对象的引⽤(但⼀般情况下,我们会使⽤泛型来约定只使⽤1种数据类型),但不能存储基本数据类型空⼝⽆凭,我们来点代码配合理解,⾸先,我们看下如下的数组代码:String[] platformArray = new String[3];platformArray[0] = "博客园";platformArray[1] = "掘⾦";platformArray[2] = "微信公众号";platformArray[3] = "个⼈博客";运⾏代码就会发现,platformArray[3] = "个⼈博客";会引发ng.ArrayIndexOutOfBoundsException异常。
⽽使⽤集合时就不存在这个问题,因为集合在声明时不需要指定长度并且长度会根据放⼊元素的多少⽽变化:List<String> platformList = new ArrayList<>();platformList.add("博客园");platformList.add("掘⾦");platformList.add("微信公众号");platformList.add("个⼈博客");观察上⾯声明数组的代码,我们可以推断出下⾯的代码肯定是编译不通过的:String[] platformArray = new String[3];platformArray[0] = "博客园";platformArray[1] = "掘⾦";platformArray[2] = 1;因为数组声明时⽤的是String类型,⽽platformArray[2] = 1;赋值时却使⽤了int类型。
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中的常⽤集合类整理⽬录Collection接⼝集合的遍历:iterator 接⼝集合的遍历:增强for循环List接⼝ArrayListSet接⼝Map接⼝HashMapLinkedHashMapTreeMapPropertiesCollections⼯具类总结集合、数组都是对多个数据进⾏存储操作(主要是内存层⾯存储)的结构,简称Java容器。
数组的特点1.数组初始化以后,长度确定不可变2.数组定义好,其元素的类型确定不可变(可能有多态性)3.数组中提供的⽅法有限,对于添加、删除、插⼊数据等操作不⽅便。
4.获取数组中实际元素的个数是没有办法的。
5.数组存储数据的特点是有序、可重复的。
Java集合可分为Collection和Map两种体系,集合存储的优点是解决数组存储数据⽅⾯的弊端。
Collection接⼝:单列数据,⽤来存储⼀个⼀个的对象List接⼝:元素有序,可重复的集合 --> '动态'数组Set接⼝ :元素⽆序、不可重复的集合Map接⼝:双列数据,保存有映射关系(键值对)的集合Collection接⼝向collection接⼝的实现类的对象中添加数据obj时,要求obj所在类要重写equals⽅法。
Abstract Methodsadd(Object e):将元素e添加到集合中size():获取添加的元素个数addAll(Collection coll):将形参coll集合的元素添加到当前集合中clear():清空集合元素,集合仍然存在,只是集合⾥没有元素isEmpty():判断当前集合是否为空contains(Object obj):判断当前集合中是否包含obj,是否包含是通过调⽤obj的equals判断containsAll(Collection coll):判断形参coll中的所有元素是否都存在当前集合中。
remove(Object obj):移除某个元素,同样通过equals寻找移除的元素removeAll(Collection coll):从当前集合中移除coll集合中所有的元素,需要调⽤equals函数retainAll(Collection coll):求两个集合的交集,结果为修改当前集合后的集合。
java集合类的使用实验遇到的问题和解决方法Java集合类是Java编程中常用的一种数据结构,它提供了一系列的接口和类,用于存储和操作一组对象。
在使用Java集合类进行实验时,我遇到了一些问题,但通过不断的尝试和学习,我成功地找到了解决方法。
首先,我在使用ArrayList类时遇到了一个问题。
ArrayList是一个动态数组,可以根据需要自动扩展和缩小。
然而,当我尝试向ArrayList中添加大量的元素时,程序运行变得非常缓慢。
经过分析,我发现这是因为ArrayList在扩展容量时需要重新分配内存空间,而这个过程是比较耗时的。
为了解决这个问题,我使用了LinkedList类代替ArrayList。
LinkedList是一个双向链表,它的插入和删除操作比ArrayList更高效。
通过这种方式,我成功地提高了程序的运行速度。
其次,我在使用HashMap类时也遇到了一个问题。
HashMap是一个键值对的集合,它通过哈希算法来存储和访问元素。
然而,当我尝试在HashMap中存储自定义对象时,出现了重复键的问题。
经过查找,我发现这是因为我没有正确地重写自定义对象的hashCode()和equals()方法。
在Java中,hashCode()方法用于计算对象的哈希码,equals()方法用于比较两个对象是否相等。
为了解决这个问题,我重写了自定义对象的hashCode()和equals()方法,确保它们根据对象的内容来生成哈希码和比较对象的相等性。
通过这种方式,我成功地解决了HashMap中重复键的问题。
最后,我在使用TreeSet类时遇到了一个问题。
TreeSet是一个有序集合,它根据元素的自然顺序进行排序。
然而,当我尝试在TreeSet中存储自定义对象时,出现了ClassCastException的异常。
经过分析,我发现这是因为我没有实现Comparable接口。
在Java中,如果要在有序集合中存储自定义对象,需要实现Comparable接口,并重写compareTo()方法来定义对象的比较规则。
java集合创建方式Java集合是Java中非常重要的数据结构,它提供了一种高效的方式来存储和操作数据。
Java集合框架包含了许多不同类型的集合,如List、Set、Map等等。
下面将介绍Java集合的创建方式。
1. 使用ArrayList创建List集合ArrayList是Java中最常用的List集合实现,它可以动态地添加和删除元素。
以下是使用ArrayList创建List集合的示例代码: ```List<String> list = new ArrayList<String>();list.add('apple');list.add('banana');list.add('orange');```2. 使用HashSet创建Set集合HashSet是Java中最常用的Set集合实现,它可以用来存储唯一的元素。
以下是使用HashSet创建Set集合的示例代码:```Set<String> set = new HashSet<String>();set.add('apple');set.add('banana');set.add('orange');```3. 使用HashMap创建Map集合HashMap是Java中最常用的Map集合实现,它可以用来存储键值对。
以下是使用HashMap创建Map集合的示例代码:```Map<String, String> map = new HashMap<String, String>(); map.put('apple', 'red');map.put('banana', 'yellow');map.put('orange', 'orange');```4. 使用TreeSet创建有序Set集合TreeSet是Java中用于创建有序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集合知识点总结Java集合是Java编程中的一个重要的部分,它的理解和使用对编程者来说是必不可少的。
它为开发者提供了一种更好地操作和管理数据的方法,大大提高了应用开发所需的效率。
本文将简要介绍Java 集合的相关概念与特性,并通过实例来更好地了解其中的知识点。
一、Java集合介绍Java集合(Collection)包括一组对象(Object),它们可以是基本类型、对象或数组,它们可以用来存储,操作和管理程序中的数据,充分体现了“面向对象”编程的抽象能力。
Java集合的特点有:(1)集合是一种容器,可以存放任何类型的对象,它是一种非常抽象的概念,可以把一堆数据项放入集合对象中;(2)集合可以自动管理里面存放的对象,提供了统一的接口来访问和修改集合中的对象,从而避免了繁琐的操作;(3)集合的每个元素都有一定的顺序,也就是说可以通过顺序来访问它们;(4)集合还可以通过索引来访问元素,而且允许程序在集合中搜索元素,这对于快速定位某个元素是非常有用的;(5)集合可以保持对象的顺序,新加入的对象总是会在特定的位置被存放,从而保证了集合中元素的顺序;(6)集合可以保持在一个容器中的唯一性,允许只有一个唯一的元素存在,因此可以用来实现不出现重复元素的数据结构。
二、Java集合类Java集合类提供了一系列容器来存储、操作和管理不同类型的数据。
基本上,Java提供的集合类可以分为两个基本类型:集合和映射。
集合:集合是用来存储元素的一种容器,它提供了一系列的方法,可以用来添加、移除和检索容器中的对象。
在Java中,拥有两个基本的集合类型:线性集合和非线性集合。
线性集合:线性集合是指那些元素之间存在有序关系的集合,元素在线性集合中可以通过索引来访问。
它主要包括List和Set,其中List是有序的集合,而Set则是无序的集合。
非线性集合:非线性集合是指元素之间没有有序关系的集合,它提供的操作更为灵活,可以通过指定的键来访问元素。
java常⽤集合类型集合Java集合集合框架是为表⽰和操作集合⽽规定的⼀种统⼀的标准体系结构接⼝:表⽰集合的抽象数据类型实现:集合框架中接⼝的具体实现算法:在实现了某个集合框架中的接⼝的对象⾝上完成某种有⽤的计算⽅法Java集合框架的三⼤类接⼝Collection包含:List和Set;三⼤接⼝为:List、Set、Map共同点:都是集合接⼝,实现存储多个对象接⼝定义Collection接⼝存储⼀组不唯⼀(允许重复)、⽆序的对象Set接⼝继承Collection接⼝,存储⼀组唯⼀(你允许重复)、⽆序的对象List接⼝继承Collection接⼝,存储⼀组不唯⼀,有序的对象Mao接⼝存储⼀组成对的键-值对象,提供key(键)到值(value)的映射Iterator接⼝负责定义访问和遍历元素的接⼝List接⼝实现List接⼝常⽤类ArrayList和linkedList。
他们都可以存储所有类型对象。
包括null,允许重复。
并且都是有序排列ArrayList的有点便于遍历元素和随机访问元素的效率⾼LinkedList才有链表存储⽅式,优点在于插⼊、删除元素时效率⾼提供addFist()、addLast()、removeFist()、removeLast()等⽅法,可以在头部尾部插⼊或删除元素List接⼝常⽤⽅法⽅法名称说明Boolean add(object 0)在列表末尾顺序添加元素,起始索引位置为0在指定索引位置添加元素,原索引位置以及后⾯的元素依次后移Void add(int i,object 0)注意:新添加元素索引必须结余0和列表元素个数之间Int size()返回列表中的元素个数返回指定索引位置处的元素Object get(int i)注意:使⽤前必须强转Boolean contains(objecto)判断列表中是够存在指定元素Boolean remove(object o)从列表中删除元素Object remove(int i)从列表中删除指定位置元素,起始索引位置从0开始LinkedList的特殊⽅法⽅法名称说明Void addFirst()在列表的⾸部添加元素Void addLast()在列表的末尾添加元素Object getFirst()返回列表第⼀元素Object getLast()返回列表最后⼀个元素Object removeFirst()删除并返回列表中的第⼀个元素Object removeFirst()删除并返回列表中的第⼀个元素Map接⼝Map常⽤⽅法⽅法名称说明Object put(object key,objectvalue)以“键-值对”的⽅式存储注意:键必须的唯⼀的,值可以重复如果键重复了后加⼊的“键-值队”覆盖原来的“键-值对”Object get(object key)根据键返回相关联的值,如不存在,返回nullObject remove(object key)删除指定的键映射的“键-值对”Int size()返回元素个数Set keyset()返回键的集合Collection values()返回值的集合Boolean containsKey(objectkey)若存在指定的键映射的“键-值对”,返回true Boolean isEmpty()若不存在键-值映射关系,则返回trueVoid clear()从此映射中移除所有映射关系Iterator迭代器专门实现集合的遍历Collection接⼝的intertor()⽅法返回⼀个Iterator,然后通过Iterator接⼝的两个⽅法即可实现遍历Boolean hasNext():判断是否存在另⼀个可访问的元素Object next():返回访问的下⼀个元素。
一、实验目的1. 理解集合类的概念和基本操作。
2. 掌握Java中集合类的基本使用方法。
3. 能够根据需求选择合适的集合类进行数据存储和操作。
二、实验环境1. 操作系统:Windows 102. 开发工具:IntelliJ IDEA3. 编程语言:Java三、实验内容1. 集合类概述2. 常用集合类1. List集合2. Set集合3. Map集合3. 集合类操作1. 添加元素2. 删除元素3. 查找元素4. 集合遍历4. 集合类之间的转换5. 集合类的排序四、实验步骤1. 创建一个新的Java项目,命名为“CollectionExperiment”。
2. 在项目中创建一个新的Java类,命名为“CollectionTest”,用于进行实验。
3. 在“CollectionTest”类中,编写以下代码:```javaimport java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set;import java.util.TreeMap;import java.util.TreeSet;public class CollectionTest {public static void main(String[] args) {// 1. 集合类概述System.out.println("1. 集合类概述");// 2. 常用集合类System.out.println("2. 常用集合类");// List集合List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");System.out.println("List集合: " + list);// Set集合Set<String> set = new HashSet<>();set.add("apple");set.add("banana");set.add("orange");System.out.println("Set集合: " + set);// Map集合Map<String, Integer> map = new TreeMap<>();map.put("apple", 1);map.put("banana", 2);map.put("orange", 3);System.out.println("Map集合: " + map);// 3. 集合类操作System.out.println("3. 集合类操作");// 添加元素list.add("grape");set.add("pear");map.put("grape", 4);System.out.println("添加元素后: List集合: " + list); System.out.println("添加元素后: Set集合: " + set); System.out.println("添加元素后: Map集合: " + map); // 删除元素list.remove("apple");set.remove("banana");map.remove("orange");System.out.println("删除元素后: List集合: " + list);System.out.println("删除元素后: Set集合: " + set);System.out.println("删除元素后: Map集合: " + map);// 查找元素System.out.println("查找元素: List集合中是否存在'banana'? " + list.contains("banana"));System.out.println("查找元素: Set集合中是否存在'pear'? " + set.contains("pear"));System.out.println("查找元素: Map集合中'apple'对应的值是多少?" + map.get("apple"));// 集合遍历System.out.println("4. 集合遍历");// List集合遍历System.out.println("List集合遍历:");for (String fruit : list) {System.out.println(fruit);}// Set集合遍历System.out.println("Set集合遍历:");for (String fruit : set) {System.out.println(fruit);}// Map集合遍历System.out.println("Map集合遍历:");for (Map.Entry<String, Integer> entry : map.entrySet()) {System.out.println(entry.getKey() + " - " +entry.getValue());}// 5. 集合类的转换System.out.println("5. 集合类的转换");// List转换为SetList<String> listToSet = new ArrayList<>();listToSet.add("apple");listToSet.add("banana");listToSet.add("orange");Set<String> setFromList = new HashSet<>(listToSet);System.out.println("List转换为Set: " + setFromList);// Set转换为ListSet<String> setToList = new HashSet<>();setToList.add("apple");setToList.add("banana");setToList.add("orange");List<String> listFromSet = new ArrayList<>(setToList);System.out.println("Set转换为List: " + listFromSet);// 6. 集合类的排序System.out.println("6. 集合类的排序");// List集合排序List<String> listForSort = new ArrayList<>();listForSort.add("apple");listForSort.add("banana");listForSort.add("orange");java.util.Collections.sort(listForSort);System.out.println("List集合排序: " + listForSort);}}```4. 运行程序,观察输出结果。
import java.util.*;public class Testset {public static void main(String args[]){ Set set = new HashSet();set.add("aaa");set.add("bbb");set.add("aaa");set.add("bbb");set.add("aaa");set.add("bbb");set.add("aaa");set.add("bbb");set.add("aaa");set.add("bbb");Iterator ite=set.iterator();set.size();while(ite.hasNext())System.out.println("------"+ite.next()); }}在使用Java的时候,我们都会遇到使用集合(Collection)的时候,但是Java API提供了多种集合的实现,我在使用和面试的时候频频遇到这样的“抉择” 。
:)(主要还是面试的时候)久而久之,也就有了一点点的心得体会,写出来以供大家讨论。
总的说来,Java API中所用的集合类,都是实现了Collection接口,他的一个类继承结构如下:Collection<--List<--VectorCollection<--List<--ArrayListCollection<--List<--LinkedListCollection<--Set<--HashSetCollection<--Set<--HashSet<--LinkedHashSetCollection<--Set<--SortedSet<--TreeSetVector : 基于Array的List,其实就是封装了Array所不具备的一些功能方便我们使用,它不可能走入Array的限制。
Java集合类框架的基本接⼝有哪些?
总共有两⼤接⼝:Collection 和Map ,⼀个元素集合,⼀个是键值对集合;其中List和Set接⼝继承了Collection接⼝,⼀个是有序元素集合,⼀个是⽆序元素集合;⽽ArrayList和 LinkedList 实现了List接⼝,HashSet实现了Set接⼝,这⼏个都⽐较常⽤; HashMap 和HashTable实现了Map接⼝,并且HashTable是线程安全的,但是HashMap性能更好;
Java集合类⾥最基本的接⼝有:
Collection:单列集合的根接⼝
List:元素有序可重复
ArrayList:类似⼀个长度可变的数组。
适合查询,不适合增删
LinkedList:底层是双向循环链表。
适合增删,不适合查询。
Set:元素⽆序,不可重复
HashSet:根据对象的哈希值确定元素在集合中的位置
TreeSet: 以⼆叉树的⽅式存储元素,实现了对集合中的元素排序
Map:双列集合的根接⼝,⽤于存储具有键(key)、值(value)映射关系的元素。
HashMap:⽤于存储键值映射关系,不能出现重复的键key
TreeMap:⽤来存储键值映射关系,不能出现重复的键key,所有的键按照⼆叉树的⽅式排列。