JAVA基础入门学习:常用的容器类

JAVA的容器—List,Map,Set
Collection是最基本的集合接口,有两个子接口List和Set的,List一定是有序的,因此包含一些指定索引位置的方法;Set不一定有序,Set接口不包含需要索引进行操作的方法,当然其实现类可以自己增加。
Collection 接口
├List 接口
│├LinkedList 类
│├ArrayList 类
│└Vector 类
│ └Stack 类
├Set 接口
│├HashSet类
│├LinkedSet类
│└TreeSet类
Map (不实现Collection接口)
├Hashtable 类
├HashMap 类
└WeakHashMap类
Collection 接口的方法:
// Collection中定义的API
boolean add(E object)
boolean addAll(Collection<? extends E> collection)
void clear()
boolean contains(Object object)
boolean containsAll(Collection<?> collection)
boolean equals(Object object)
int hashCode()
boolean isEmpty()
Iterator iterator()
boolean remove(Object object)
boolean removeAll(Collection<?> collection)
boolean retainAll(Collection<?> collection)
int size()
T[] toArray(T[] array)
Object[] toArray()

List接口中的方法:
list是有序的,因此可以add到指定位置。
listIterator():可以通过迭代器listIterator对list进行增删改查
LinkedList 类和ArrayList 类的主要区别:

  • 区别:底层一个使用链表一个使用数组的数据结构,随机访问(get和set)时,ArrayList优于LinkedList;新增和删除操作,LinedList比较占优势。
  • 联系:都有get、set、remove、add(index)方法。两者都是非线程安全的,多线程时需要自己实现同步访问。
  • LinkedList(有first和last两个指针)提供额外的get,remove,insert方法在 LinkedList的首部或尾部,使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。LinkedList对某个位置的数据进行删或改时,需要先从first指针往后遍历到第index个节点,数组则可以一次定位。
    Vector类
      Vector非常类似ArrayList,但是Vector是同步的。由Vector创建的Iterator,虽然和ArrayList创建的 Iterator是同一接口,但是,因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常。
    Stack 类
      Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。基本的push和pop 方法,还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。
    随机访问:
    随机访问是说你可以随意访问该数据结构中的任意一个节点,直接first+N,便可以得到第N个元素的地址,因为这些相邻元素是按顺序连续存储的。 比如普通数组就是可随机访问的。而链表不支持随机访问,链表存储的元素,它们的存储地址也不是连续的,是随机的。

每个类的常用方法

通用方法:
isEmpty()判断是否为空
size()返回集合大小
add([E element)增加元素
remove(int index)和remove(Object o)和removeAll(Collection c)删除元素
set(int index,Object o)覆盖元素
get(int index)根据索引获取元素
iterator()和listIterator([int index]) 后者可以指定迭代器指针位置

ArrayList类
isEmpty()判断是否为空
size()返回集合大小
add([int index],E element)和addAll([int index],Collection c)增加元素
remove(int index)和remove(Object o)和removeAll(Collection c)删除元素
set(int index,Object o)覆盖元素
get(int index)根据索引获取元素
iterator()和listIterator([int index]) 后者可以指定迭代器指针位置

LinkedList类
增加:
add(E e):在链表后添加一个元素; 通用方法
addFirst(E e):在链表头部插入一个元素; 特有方法
addLast(E e):在链表尾部添加一个元素; 特有方法
push(E e):与addFirst方法一致
offer(E e):在链表尾部插入一个元素
add(int index, E element):在指定位置插入一个元素。
offerFirst(E e):JDK1.6版本之后,在头部添加; 特有方法 offerLast(E e):JDK1.6版本之后,在尾部添加; 特有方法

删除:
remove() :移除链表中第一个元素; 通用方法
remove(E e):移除指定元素; 通用方法
removeFirst(E e):删除头,获取元素并删除; 特有方法
removeLast(E e):删除尾; 特有方法
pollFirst():删除头; 特有方法
pollLast():删除尾; 特有方法
pop():和removeFirst方法一致,删除头。
poll():查询并移除第一个元素 特有方法

查:
get(int index):按照下标获取元素; 通用方法
getFirst():获取第一个元素; 特有方法
getLast():获取最后一个元素; 特有方法
peek():获取第一个元素,但是不移除; 特有方法
peekFirst():获取第一个元素,但是不移除;
peekLast():获取最后一个元素,但是不移除;
pollFirst():查询并删除头; 特有方法
pollLast():删除尾; 特有方法
poll():查询并移除第一个元素 特有方法

子类 Queue

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值