关于JAVA中的集合的相关总结(1)
在集合中只能使用引用对象(最好使用String或者Integer:底层已经重写过许多方法,较为方便使用)
在集合中分为两大体系,他们分别是:collection接口与Map接口.
先说collection接口形容collection接口可以说是:一个"格子"里存放一个数据或对象,具体实现方法可见ap
在collection接口中,有几大比较常用的子接口:分别是List,Set,Dqueue和Iterator方法; 先说Iterator,这是集合中特有的迭代器,相当于循环遍历的作用,只要集合中有索引(顺序),就可使用,此方法在JDK1.0版本出现,比较早期,使用方法如下图所示![在这里插入图片描述](https://img-blog.csdnimg.cn/20181117222239794.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L29hc2lzZGQ=,size_16,color_FFFFFF,t_70#### ####说完迭代器后,我们先来看List子接口: 像极了数组,有顺序(下标),可以储存重复数据
在List子接口中有几大实现类:
ArrayList, LinkedList,Vector 以及 :listIterato 而这几大实现类,没有特殊要求最好先用ArrayList,如果对排序有特殊要求,则可以选择使用LinkedList,而Vector是一个实现类,其子类是Stack为数据结构中的栈,其作用是保证存储的数据实现先进后出的特点.像极了ArrayList
在ArrayList中 数据结构为数组,特点为遍历快,增删慢 线程不安全 特别注意的是重写toString方法以及Equals方法使得保存数据的比较方法不一样主要的方法详见api1.8版本
下面说List接口中的LinkedList实现类,数据结构为链表,特别为增删快,遍历慢 具体方法的实施详见api1.8版本,LinkedList还实现了Deque接口,可被当做双端队列来使用,同样也可以被当做“栈”来使用。 (Dqueue在下文中会讲到)
之后我们来讲实现类:Vector::与ArrayList很像,线程安全,JDK1.0版本出现 子类是stack,数据结构是栈 其特点是保存的数据实现先进后出的原则.
最后我们来看迭代器:ListIterator 比传统的iterator方法更多,且版本高,新加的元素也可用里面的方法遍历出来. :具体方法看api.
之后我们来看一下Set子接口:没有我们认为的顺序(有顺序,利用的底层的算法,不是我们日常定义的顺序),不能存重复数据.
我们先来看HahSet:不能保证元素的排列顺序,排列顺序可能与添加顺序不同。HashSet不是同步的,如果多个线程同时访问一个HashSet时,假设有一个或多个线程同时修改了HashSet集合时,则必须通过代码块来保证其同步。注意:如果通过equals方法比较返回true,同时根据hashCode()方法获取的返回值也相同,则只能存储一个对象。集合元素可以是null。当把一个对象放入到HashSet中时,如果重写了这个对象的equals方法,那么也必须重写这个对象的hashCode方法。其规则就是如果equals方法返回true,那么这两个对象的hashCode的值也应该相同。
之后再来看看LinkedHashset LinkedHashSet是HashSet的子类,维护顺序 具体方法j见api
然后是 EnumSet继承了Enum, 具体方法见api
最后是子接口:SortedSet 里面的实现类为TreeSetTreeSetTreeSet可以确保集合元素处于排序状态。与HashSet相比,TreeSet还提供了额外方法: 具体见api
接下来看一下Set的Queue接口:
模拟队列数据结构:先进先出,后进后出的原则 第一个存放的元素对象存放在队列队首位置,后进入的元素插入到队尾的位置,队列不允许随机访问队列中元素。具体方法看api
*