很高兴能在这里认识大家,我也是刚刚接触后端开发的学习者,相信很多朋友在学习中都会遇到很多头疼的问题,希望我们都能够把问题分享出来,把自己的学习思路整理出来,我们一起探讨一起成长。
今天我在这里简单讲解一下我对学习中集合的理解。很多朋友再写解释的时候,没有从最简单说起,造成了阅读中的困惑,或许我能帮助你对集合有一个新的认识。
首先当我们谈到集合的时候要了解一下集合的具体概念。
java集合的概念是相对于数组来说的,那么什么是数组呢?
数组:数组是一段连续存储单元. 每个存储单元的空间大小相同.类型统一,数组的长度是不可变的(定义之后)。
同一个数组只能存放相同类型的数据。(基本数据类型或者引用数据类型)
这样我们再解释集合就会容易理解了。
集合:1,可以操作和储存数目不固定的一组数据。
2, java中所有集合都位于java.util包中。
3,java集合中只能存放引用数据类型,不能存放基本数据类型。
4,不限定集合的长度,可以添加任意多的元素。
5,集合中限定元素成为泛型
那么我们了解集合基本概念之后,看看集合的分类?首先我们要了解一点那就是接口的概念。
什么是接口呢?
什么是接口:接口就是一些方法特征的集合------接口是对抽象的抽象。
什么是抽象类:抽象类对某具体类型的部分实现------抽象类是对具体的抽象。
方法特征包括:方法的名字、参数的数目、参数的类型。不包括:返回类型、参数名字、和抛出的异常。
接口是类型转换的前提、是动态调用的保证。实现某一接口就完成了类型的转换(多重继承);动态调用只关心类型,不关心具体类。
因为我们谈到集合的时候必须涉及到接口。下面我们就了解一下集合的基本分类。我们看下面这幅图片。
1、Collection接口(因为这个集合本身也属于接口)
Collection是最基本集合接口,它定义了一组允许重复的对象。Collection接口派生了两个子接口Set和List,分别定义了两种不同的存储方式,如下:
2, Set接口
Set接口继承于Collection接口,它没有提供额外的方法,但实现了Set接口的集合类中的元素是无序且不可重复。
特征:无序且不可重复。
3、 List接口
List接口同样也继承于Collection接口,但是与Set接口恰恰相反,List接口的集合类中的元素是对象有序且可重复。
特征:有序且可重复。
两个重要的实现类:ArrayList和LinkedList
1.ArrayList特点是有序可重复的
2.LinkedList是一个双向链表结构的。
4、Map接口
Map也是接口,但没有继承Collection接口。该接口描述了从不重复的键到值的映射。Map接口用于维护键/值对(key/value pairs)。
特征:它描述了从不重复的键到值的映射。
两个重要的实现类:HashMap和TreeMap
1.HashMap,中文叫散列表,基于哈希表实现,特点就是键值对的映射关系。一个key对应一个Value。HashMap中元素的排列顺序是不固定的。更加适合于对元素进行插入、删除和定位。
2.TreeMap,基于红黑书实现。TreeMap中的元素保持着某种固定的顺序。更加适合于对元素的顺序遍历。
5、Iterator接口
Iterator接口,在C#里有例外一种说法IEnumerator,他们都是集合访问器,用于循环访问集合中的对象。 所有实现了Collection接口的容器类都有iterator方法,用于返回一个实现了Iterator接口的对象。Iterator对象称作迭代器,Iterator接口方法能以迭代方式逐个访问集合中各个元素,并可以从Collection中除去适当的元素。
关于一些集合的实现类的方法;
Arrays.hashCode:用来根据数组的内容计算其哈希值(数组对象的hashCode()
不可用)。这个方法集合了Java 5的自动装箱和无参变量的特性,来实现将一个变量快速地传给 Arrays.hashcode
方法——只是传值进去,不是对象。
Arrays.sort:对整个数组或者数组的一部分进行排序。也可以使用此方法用给定的比较器对对象数组进行排序。
Arrays.toString:打印数组的内容。
所有的集合都可以用T[] Collection.toArray( T[] a )
这个方法复制到数组中。通常会用这样的方式调用,
<span class = "hljs-keyword" > return coll.toArray( <span class = "hljs-keyword" > new T[ coll.size() ] );</span></span> |
这个方法会分配足够大的数组来储存所有的集合,这样 toArray
在返回值时就不必再分配空间了。
怎么遍历集合中的元素?
A:
Iterator it=al.iterator();
while(it.hasNext())
{
sop(it.next());
}
B:
for(Iterator it=al.iterator();it.hasNext();)
{
sop(it.next());
}
c:
for(String alist:al)
{
System.out.println(alist);
}
我们对集合的探讨暂时到这里,后续可以加赠内容。