java学习初探十三之集合

一、集合分为两部分(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;
        }
    }
}

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章