集合框架概述集合框架是Java中非常重要的一种数据结构它是用来存储对象的一个容器在容器中可以存放多个多类型的元素集合的概念进一步提高了java的封装思想数据的杂乱多现象用类来封装把各个需要的数据封装到一个具体类中一类的形式体现对象的特性集合是用来存储类多的现象一层层的往上封装体现给用户只是一个简单的接口这在程序的开发和阅读性减轻的代码的复杂度java的扩平台易扩展特性充分体现出这一点这是我个人的理解集合中存放的元素不同根据这些元素做了相应的处理和存储根据不同的存储结构集合分为了List集合和Set集合两大分支List集合的特点就是元素具备角标对List集合中元素的访问也多了一种方式就是按照角标操作List集合中的元素可以重复Set集合的特点是元素不具备角标元素不能重复对元素的访问使用Iterator迭代器
集合的分类及特点Collection|——list元素是有序的元素可以重复因为该集合体系有索引取元素方式有两种一种是for循环一种是迭代器
ArrayList底层数组结构特点增加删除比较慢查询速度快线程不同步
linkedList底层是链表结构特点增加删除比较快查询速度慢
特有方法addFirst()addLast()getFirst()getLast()获取元素但不删除元素如果没有元素会出现NoSuchElementException removeFirst()removeLast()获取元素但是元素被删除如果没有元素会出现NoSuchElementException在JDK出现了替代方法
OfferFirst()OfferLast()peekFirst()peekFirst()获取元素但不删除元素如果没有元素不会出现NoSuchElementException pollFirst()pollLast()获取元素但是元素被删除如果没有元素不会出现NoSuchElementException vector底层是数组结构线程同步增删改查速度都慢被ArrayList代替
枚举是vector特有的取出方式vector有三种取出方式枚举和迭代器很像
其实枚举和迭代是一样的因为枚举的名称以及方法的名称比较长被迭代器取代了
List集合判断元素是否相等使用是自身的equals方法默认的equals方式比较的是地址值当我们比较元素是否相等时如果判断的条件不一样时需要复写equals方法
|——set元素是无序元素不重复Set集合的方法和Collection是一致的
|——HashSet底层结构式哈希表
在对HashSet集合存储元素的时候首先调用hashCode()方法获得给对象的哈希值当以后加入元素时也是首先获得该元素的哈希值然后跟集合中已有元素的h哈希值比较如果哈希值不等不会调用equals()方法元素存储成功如果新加元素和已有某个元素的哈希值相同在调用equals()判断是否为同一元素做进一步的判断这个可以根据自己的条件复写hashCode()和equals()HashSet集合对元素不会进行默认排序
注意对于判断元素是否存在以及删除等操作依赖的方法是元素hashCode和equals |——TreeSet可以对set集合中的元素进行排序TreeSet集合中的元素要具备比较性存储多个不具备比较性的元素编译时会报错是元素具备比较性的方式有两种实现comparable接口和在创建集合时传递比较器comparator