Java集合框架简单整理

Java集合框架是jdk中存在于java.util.*中,包含Collection与Map连个顶级接口。

一、Collection 集合的根接口

定义的方法有:

boolean add(Object o)   //添加对象到集合
boolean remove(Object o)  //删除指定的对象
int size()  //返回当前集合中元素的数量
boolean contains(Object o)  //查找集合中是否有指定的对象
boolean isEmpty()  //判断集合是否为空
Iterator iterator()  //返回一个迭代器
boolean containsAll(Collection c)  //查找集合中是否有集合c中的元素
boolean addAll(Collection c)  //将集合c中所有的元素添加给该集合
void clear()  //删除集合中所有元素
void removeAll(Collection c)  //从集合中删除c集合中也有的元素

void retainAll(Collection c)  //从集合中删除集合c中不包含的元素

1、 List接口

继承Collection,称之为有序的 collection。其允许集合中元素重复及多个null值。

提供的方法:

void add(int index,Object element)  //在指定位置上添加一个对象
boolean addAll(int index,Collection c)  //将集合c的元素添加到指定的位置
Object get(int index)  //返回List中指定位置的元素
int indexOf(Object o)  //返回第一个出现元素o的位置
Object remove(int index)  //删除指定位置的元素

Object set(int index,Object element)  //用元素element取代位置index上的元素,返回被取代的元素

常用的实现类有:ArrayList、LinkedList、Vector

数据结构

1、数据间的逻辑结构:①集合结构:集合结构中的数据元素除了同属一个集合外,没有其他关系。

                               ②线性结构: 数据元素之间是一对一关系。

                               ③属性结构:数据元素之间存在一对多关系。

                               ④图形结构:数据元素之间是多对多关系。

2、数据间的存储结构:①顺序存储结构:数据元素存放在地址连续的的存储单元里。典型例子:一维数组

                               ②链式存储结构:数据元素存放在任意储存单元里,这些储存单元可以连续也可以不连续。数据元素的存储关系不能反映其逻辑关系,会用到一个存放数据元素地址的指针。

 逻辑结构是面向问题的,存储结构是面向计算机的。                 


ArrayList:List的主要实现类;线程不安全,效率高;底层Object [ ]实现;默认数组长度为10,当添加第11个元素是需要扩容,默认扩容为数组的长度的1.5倍。
Vector:List的古老实现类;线程安全,效率低;底层Object [ ]实现;

LinkedList:底层双向链表 ;用于频繁的插入或者删除操作;Node<E> first、Node<E> last;

private static class Node<E> {
        E item;
        Node<E> next;
        Node<E> prev;
        Node(Node<E> prev, E element, Node<E> next) {
            this.item = element;
            this.next = next;
            this.prev = prev;
        }
   }


2、 Map接口

常用实现类是HashMap,结构:数组结构+链表结构

HashMap使用一个Entry数组保存key、value数据,当一对key、value被加入时,会通过一个hash算法得到数组的下标index,算法很简单,根据key的hash值,对数组的大小取模 hash & (length-1),并把结果插入数组该位置,如果该位置上已经有元素了,就说明存在hash冲突,这样会在index位置生成链表。
 
当容量超过数组长度*扩容因子时扩容。

Hashtable:Map的古老实现,线程安全,不允许存储null值得key和value。
HashMap:Map的主要实现类,线程不安全,允许存储null值的key和value。


































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值