第十一章 集合框架

想要存储多个对象我们学习过的可以使用数组,但是如果存储的对象个数会不断变化的话,用数组就不合适了.因为数组存储的数组是定长的.

所以java中提供了集合类,让我们更方便的存储变长个数的对象.

集合和数组的最大区别是:

数组的长度是固定的,但集合的长度是可变的.

数组只能存储相同类型的数据,而集合能够存储不同类型的数据.

集合按照存储结构可以分成俩类:

1、Collection单列集合:用于存储一系列符合某种规则的元素

   子接口:List、Set.

  List中可以有重复的元素,并且List类中带有索引,可以通过索引精确得操作集合中的元素

2、Map双列集合:用于存储有映射关系的数据,有主键关系,就像是Python的字典.

  子接口:HashMap、TreeMap

Collection接口:

是所有单列集合类的父接口,有一些单列集合(List 、Set)通用的方法:

 用于增加数据:

   add(E e):添加成功返回True,失败返回False

   addAll(Collection c) 将参数集合中的元素添加到调用对象集合中.

用于删除数据:

   clear():移除集合所有的元素

  remove(Object o):删除集合中指定的元素

   removeAll(Collection o):删除调用集合中的o集合中的所有元素

  retainAll(Collection o):保留调用集合中与集合o中元素相同的元素,其他全部删除

用于查看:

  size() :查看集合元素的个数

用于判断:

  isEmpty():判断集合是否为空

  contains(Object o):判断调用集合元素中是否有o对象

   containsAll(Collection c):判断集合中是否存在有c集合

Collection的子接口:List类

常用方法:

用于增加:

  void add(int index,E element):将E元素添加到集合的index位置

  boolean addAll(int index,Collection c):将集合c中的元素添加到调用集合的index处,如果失败会返回false,成功会返回true

用于获取:

  Object get(int index):获取调用集合中index位置的元素

  indexOf(Object o):获取调用集合中对象中o对象出现的位置索引值

  lastIndexOf(Object o):获取调用集合对象中o对象最后一次出现的位置索引值

  List subList(int fromIndex,int toIndex):返回调用集合中位置索引值为fromIndex到toIndex值的所有元素,返回值为集合.

用于修改:

  set(int index,E element) 将索引值为index的元素替换成element对象,并将替换后的元素返回.

List接口有俩个常用实现类,

ArrayList

当ArrayList的容量不够时,会自动增长为原来的1.5倍.在内存空间的地址是连续的,所以ArrayList数据查找速度快,但是增删数据慢.

ArrayList的大多数常用方法都是从Collection和List那继承来的,就不再介绍了.

LinkedList

LinkedList和ArrayList相反,虽然查询速度慢,但是增加和删除元素快,因为LinkedList类底层是用链表来实现的,

每次查找元素需要从头往下找.

常用方法:

void addFirst(Object o) :将指定元素插入到此列表的开头

void addLast(Object o):将制定元素插入到此列表的结尾

Object getFirst():获取列表第一个元素

Object getLast():获取列表最后一个元素

Object removeFirst():移除并返回此列表的第一个元素

Object removeLast():移除并返回此列表的最后一个元素

Iterator迭代器

为了方便处理集合中的元素,提供了一些方法来处理集合中的元素.

就是Iterator了

Iterato迭代器获取:(使用集合自带的iterator方法)

Iterator i=集合对象.iterator();//获得自身的迭代器

常用方法:

boolean hasNext() :检查是否还有元素可以迭代,如果有则返回true,无返回false

next() :返回迭代的下一个元素

remove():删除迭代器返回的最后一个元素,从Iterator指向的collection中.

Iterator常与while语句配合使用:

while(iterator.hasNext())
{
    System.out.println(itrator.next());
}

Collection的另一个子接口:Set

Set与List不同的是:Set存储数据是无序的,并且存入的数据是不可重复的(按照某种规则)

Set有俩个实现类:

HashSet:根据对象的哈希码值来确定元素在集合中的存储位置,所以具有良好的存取和查询能力

TreeSet:已二叉树的方式来存储元素,他可以实现对集合中的元素进行排序.

原文地址:https://www.cnblogs.com/youjunhui/p/14910868.html