java学习初探十三之集合

来源:互联网 发布:画房屋平面图软件 编辑:程序博客网 时间:2024/05/16 09:46

一、集合分为两部分(Collection和Map)
1.Collection
只能存储引用类型,并且只能单个存储。
(1)Collection继承结构图
这里写图片描述
List存储元素的特点:有序可重复,存进去什么顺序取出来还是什么顺序。
Set存储元素的特点:无序,不可重复。存进去的时候是一个顺序,取出的时候不一定什么顺序了。
SortedSet存储元素的特点:无序,不可重复。但是存储进去的元素可以按照元素的大小排序。
(2)底层数据结构
ArrayList底层数据结构:数组存储元素的,所以ArrayList适合查询,不适合频繁的随机增删元素。
LinkedList底层采用双向链表存储数据元素的,适合增删元素,不适合查询操作。
Vector底层和ArrayList相同,但是Vector是线程安全的。效率较低,所以现在很少使用。

2.Map
(1)Map集合的继承结构图:
这里写图片描述
Map集合以键值对的方式存储元素,键特点无序不可重复。Map和Collection没有关系。

3.双向链表和单向链表
单向链表
单向链表

(主要针对1中的LinkedList)
(1)提问:为什么单向链表查询效率低?
因为单向链表中的元素在空间的存储位置上没有规律,也没有顺序,那么在查找某个元素的时候必须从头节点挨着往后找,直到找到为止。
(2)为什么单向链表的增删效率高?
因为链表每个元素存储的空间是没有顺序的,删除或者添加某个元素,只需要让指针重新指向即可,不需要将其他元素位移。所以随机增删效率较高。

/* * 使用java模拟单向链表(待完善) */public class Linked {    //节点    Entry entry;    Linked(){        //只有一个头节点        entry=new Entry(null,null);    }    //add    //remove    //find    //静态内部类    static class Entry{        //Filed        Object data=null;        Entry next;        //constructor        Entry(Object data,Entry next){            this.data=data;            this.next=next;        }    }}

双向链表
双向链表是一个环状
双向链表
节点由三部分组成:指向上一个节点的内存地址,数据,指向下一个节点的内存地址