集合框架

来源:互联网 发布:eia数据公布 编辑:程序博客网 时间:2024/06/05 04:13

数据结构

栈:先存入的在最下面,先进后出(FILO)first in last out

链表:查找效率不高

队列:先进先出FIFO

二叉树:三种遍历顺序,前序中序后序,先左后右

图:无规则

 

集合三大接口

Collection 所有集合类的跟接口

Map 映射接口,存放键值对

Iterator 遍历集合的迭代接口

 

Java的集合框架是由很多接口、抽象类、具体类组成的,都位于java.util包中。除Comparable位于Java.lang包


 

 

Collection

Collection意即集合,是所有集合类的根接口,同时Collection接口是一个泛型接口

 

List

  有序的集合,元素有序存入,可能重复。

Set

  无序,无重复的集合,即存入的元素不重复。

Queue

  队列,jdk1.5版本新增接口,Queue实现了“先进先出”(FIFO)的存储结构。Queue是Collection的子接口,具有所有集合基本操作,除此之外,Queue还提供了一些新的插入、提取、查询等方法。

SortedSet

有序

 

Map接口

   Map中保存的是键值对Map<key,Value> ,Key值不允许重复,如果重复,则覆盖

实现类:

HashMap

   HashMap中元素的key值不能重复,即彼此调用equals方法,返回为false。排列顺序是不固定的。

线程不安全,少一步check,所以效率高,初始容量16

Hashtable

线程安全,初始容量11,有了Hashmap后逐渐少用

TreeMap

  TreeMap中所有的元素都保持着某种固定的顺序,如果需要得到一个有序的Map就应该使用TreeMap,key值所在类必须实现Comparable接口

适用于按自然顺序或自定义顺序遍历键(key)。

TreeMap根据key值排序,key值需要实现Comparable接口,实现compareTo方法。TreeMap根据compareTo的逻辑,对key进行排序

 

 

List接口

继承了Collection接口,并且扩展出属于自己的方法;List 集合中的元素都是与索引有关系的,因此List集合扩展的方法都是与索引有关系的。

   例如: add(int index,E)……添加元素在所对应的索引位置

List三个实现的类

 ArrayList

         数组列表,数据采用数组方式存储,使用连续内存存储。ArrayList是Java语言中可变长度数组的实现  

ArrayList本质上是一个动态数组,是实际应用中最常用的集合类  

初始化能存10个元素,自动扩展  (原长度*3)/2+1

Null可以无限制存入

可重复

非线程安全

 

LinkedList

          链表,该集合类型实现了“链表”的数据结构。值得一提的是,LinkedList不仅实现了List接口,还实现了Queue接口,可以说链表同时也可以作为一个队列对象使用。使用方式与ArrayList类似

以链表的方式存放的,每个节点上存放的是数据信息

由于实现了Queue接口,先进先出。删除元素只能正着删,不能倒着删

  Vector

     jdk1.0中的集合,实现了同步。该集合类型实现了“链表”的数据结构。值得一提的是,LinkedList不仅实现了List接口,还实现了Queue接口,可以说链表同时也可以作为一个队列对象使用。使用方式与ArrayList类似

有了ArrayList后逐渐少用

线程安全

初始能存10个元素 默认扩展长度=原长度*2

 

Set接口

Set中所存储的元素是不重复的,但是是无序的,Set中的元素是没有索引的

Set接口的实现类

HashSet

  HashSet类中的元素不能重复,即彼此调用equals方法比较,都返回false

不重复,Hashcode不重复,无索引

遍历不能用普通for循环

默认初始容量16

 

注意内存泄漏,更改对象属性在add之前更改

TreeSet

   可以给Set集合中的元素进行指定方式的排序。存储的对象必须实现Comparable接口

实现了元素排序

不能有null

不可重复

要求实现Comparable接口

 

Properties类

 

  Properites类是Hashtable类的子类,所以也间接地实现了Map接口。

  在实际应用中,常使用Properties类对属性文件进行处理。

  常用方法:load();加载文件;

           getProperty(key);通过key值获得对应的value值

           setProperty(String key,String value)给properties文件中写值

 

Collections类

是集合类的工具类,与数组的工具类Arrays类似定义了大量静态方法

—同步集合对象的方法

—对List排序的方法

 

原创粉丝点击