java的类集框架
来源:互联网 发布:日本wonderchef 知乎 编辑:程序博客网 时间:2024/05/02 23:46
类集就是一个动态对象数组,可以存放基本数据类型,也可以存放对象,Java中实现类集的包是java.util.*,使用类集必须先导入这个包 import java.util.*;
三大集合:List、Set、Map
类集就是一个动态对象数组,可以存放基本数据类型,也可以存放对象,Java中实现类集的包是java.util.*,使用类集必须先导入这个包 import java.util.*;
三大集合:List、Set、Map
概述:
保存单个值的集合:Collection,它有两个子类List,Set
|-List :允许有重复元素,有序(按输入的顺序存放和输出)
|-ArrayList:异步处理,只能用Iterator输出
|-LinkedList:使用链表结构的集合
|-Vector:同步处理,能用Iterator和Enumeration同时输出
|-Set: 不允许有重复元素
|-HashSet:散列,无序
|-TreeSet:有序,按Compareable接口排序,由小到大
保存一对值:Map
|-HashMap:异步处理的,新类
|-Hashtable:同步处理,旧类
|-TreeMap:按Key进行排序的集合
输出:|-Iterator:新的输出类,方法名称短,一般多用它输出
|-Enumeration:旧的输出类,方法名称长,少用
1.Collection接口:在开发中一般都不直接使用它,而使用它的子接口List、Set
List实现由它的ArrayList类完成,ArrayList继承AbstractList类并实现List接口,ArrayList是动态数组, 采用异步处理方式,有序(按输入顺序排放),数据可以重复,由于用数组实现,所以查询快,增删慢
创建: List list=new ArrayList();
加入数据:add(Object obj);加入数据的顺序就是输出数据的顺序
删除数据:remove(Object obj);
LinkedList类提供了链表数据结构,其操作与ArrayList无异,由于用链表实现,所以增删快,查询慢
两者都使用Iterator(迭代器,循环器)输出,因为集合的长度不固定,所以Iterator采用一个一个的判断输出,有则输出。判断是否有下一个元素:hasNext() 取内容:next()
如果想让集合中指加入某一种对象,使用泛型<E> List<String> list=new ArrayList<String>这样只能存放字符串对象
List的另一个子类:Vector,它是同步的,线程安全,但是效率低
Collection集合的主要操作方法:add(),remove(),size(),iterator(),get()
2.HashSet类继承AbstractSet类并且实现Set接口,无序,散列存放,数据不可以重复 Set set=new HashSet();
Set的使用基本与List一致,但是HashSet是无序的,如果希望存放时有序的,使用TreeSet,自动排序(与List不一样),它使用了Compareable接口排序。
注:HashSet的底层是由HashMap实现的
Java类集框架
3.Map相当于电话本,通过键值一一对应,key-value,Map的主要功能是作为查找使用,而不是输出使用,
Map map=new HashMap() Map存放数据的方法:put(key,value) 取数据的方法:get(key)
Map接口的对象不能直接使用Iterator输出,如果非要使用Iterator对象输出集合中的内容,使用一下步骤:
Map—Set—Iterator—Map.Entry—key,value
TreeMap与HashMap无异,但是它可以对数据进行排序,可以快速检索
Hashtable与HashMap类似,但Hashtable是同步的,同时不支持迭代函数(iterator)
4.Enumeration枚举类(一一列出所有可能),与Iterator功能相同,都是输出集合中的内容,List和Set都不能使用Enumeration输出,但是List的一个子类Vector可以使用它输出。
Vector v=new Vector(); Enumeration e=v.elements();
判断是否有下一个内容:hasMoreElements 取值:nextElement()
5.栈是一个先进后出的存储结构,进栈(push),出栈(pop)
属性类:Properties,与Hashtable不同的是,它主要保存字符串,而Hashtable保存对象。
存数据:setProperty(key,value) 取数据getProperty(key)
概述:
保存单个值的集合:Collection,它有两个子类List,Set
|-List :允许有重复元素,有序(按输入的顺序存放和输出)
|-ArrayList:异步处理,只能用Iterator输出
|-LinkedList:使用链表结构的集合
|-Vector:同步处理,能用Iterator和Enumeration同时输出
|-Set: 不允许有重复元素
|-HashSet:散列,无序
|-TreeSet:有序,按Compareable接口排序,由小到大
保存一对值:Map
|-HashMap:异步处理的,新类
|-Hashtable:同步处理,旧类
|-TreeMap:按Key进行排序的集合
输出:|-Iterator:新的输出类,方法名称短,一般多用它输出
|-Enumeration:旧的输出类,方法名称长,少用
1.Collection接口:在开发中一般都不直接使用它,而使用它的子接口List、Set
List实现由它的ArrayList类完成,ArrayList继承AbstractList类并实现List接口,ArrayList是动态数组, 采用异步处理方式,有序(按输入顺序排放),数据可以重复,由于用数组实现,所以查询快,增删慢
创建: List list=new ArrayList();
加入数据:add(Object obj);加入数据的顺序就是输出数据的顺序
删除数据:remove(Object obj);
LinkedList类提供了链表数据结构,其操作与ArrayList无异,由于用链表实现,所以增删快,查询慢
两者都使用Iterator(迭代器,循环器)输出,因为集合的长度不固定,所以Iterator采用一个一个的判断输出,有则输出。判断是否有下一个元素:hasNext() 取内容:next()
如果想让集合中指加入某一种对象,使用泛型<E> List<String> list=new ArrayList<String>这样只能存放字符串对象
List的另一个子类:Vector,它是同步的,线程安全,但是效率低
Collection集合的主要操作方法:add(),remove(),size(),iterator(),get()
2.HashSet类继承AbstractSet类并且实现Set接口,无序,散列存放,数据不可以重复 Set set=new HashSet();
Set的使用基本与List一致,但是HashSet是无序的,如果希望存放时有序的,使用TreeSet,自动排序(与List不一样),它使用了Compareable接口排序。
注:HashSet的底层是由HashMap实现的
3.Map相当于电话本,通过键值一一对应,key-value,Map的主要功能是作为查找使用,而不是输出使用,
Map map=new HashMap() Map存放数据的方法:put(key,value) 取数据的方法:get(key)
Map接口的对象不能直接使用Iterator输出,如果非要使用Iterator对象输出集合中的内容,使用一下步骤:
Map—Set—Iterator—Map.Entry—key,value
TreeMap与HashMap无异,但是它可以对数据进行排序,可以快速检索
Hashtable与HashMap类似,但Hashtable是同步的,同时不支持迭代函数(iterator)
4.Enumeration枚举类(一一列出所有可能),与Iterator功能相同,都是输出集合中的内容,List和Set都不能使用Enumeration输出,但是List的一个子类Vector可以使用它输出。
Vector v=new Vector(); Enumeration e=v.elements();
判断是否有下一个内容:hasMoreElements 取值:nextElement()
5.栈是一个先进后出的存储结构,进栈(push),出栈(pop)
属性类:Properties,与Hashtable不同的是,它主要保存字符串,而Hashtable保存对象。
存数据:setProperty(key,value) 取数据getProperty(key)
主要有两大类。Collection和Map
1.Collection
Collection是一个集合的接口,他下面的子类有:
1.1 List接口:有序,有索引,可重复
1.1.1 ArrayList:底层以数组实现,增删满,查询快,不同步
1.1.2 LinkedList:底层以链表实现,增删快,查询满,不同步
1.1.3 Vector:以数组实现,被ArrayList取代,线程同步
Note:对于是否存在以及删除等操作,依赖的方法是元素的HashCode()和equals()方法;
而ArrayList对于判读存在以及删除等,用的只有equals()方法
1.2 Set接口:无序,无索引,不可重复
1.2.1 HashSet:无序,不重复,高效,底层以哈希表实现。不同步
保证元素唯一性的实现原理:HashCode方法和equals方法,如果HashCode相同,直接存入;如果HashCode的值相同,则调用equals方法,看是不是返回true,如果true就是相同元素了。
1.2.1.1 LinkedHashSet:有序,是HashSet的子类
1.2.2 TreeSet:有序,不重复,底层以二叉树实现。不同步
保证元素唯一性的实现原理:Comparable的compareTo()方法的返回值。
TreeSet的排序方法:
1.默认方法:自然排序,通过实现Comparable接口compareTo()方法来完成
2.比较器:如果添加的元素本身不具备可比较性或是不是自己想要的比较方式,将比较器作为参数传递进去。
通过实现Comparator接口的compare()方法,当主要条件相同时,比较次要条件
如果同时存在两种排序方法,采用第二种
2.Map
跟Collection的单一元素不同,Map存储的是键值对元素,他下面的子类有:
2.1 HashTable:有序,不可存Null的值和键,同步
Properties是HashTable的子类,他是集合和IO流的结合产物,可以保存在流中或者从流中加载
2.2 HashMap:底层以哈希表实现,可存Null值的键值对,无序(只能自定义通过key排序),高效,不同步
2.3 TreeMap;底层以二叉树实现,可排序,不同步
- java的类集框架
- Java的类集框架一
- 关于java类集框架的总结
- Java类集框架
- JAVA类集框架
- Java 类集框架
- java 类集框架
- java 类集框架
- JAVA 类集框架
- java类集框架
- Java类集框架
- Java类集框架
- Java类集框架
- Java类集框架
- java类集框架
- Java类集框架
- Java 类集框架
- JAVA类集框架
- XML publicId和systemId
- C#实现归并排序
- ios开发——NSNotificationCenter (通知中心)
- Vigenere密码
- ZOJ 2857 Image Transformation
- java的类集框架
- Dom4J --- 使用dom4j解析XML时候忽略DTD文件
- Hibernate与Jpa的关系,终于弄懂
- DataGridView 行记录上下移动
- Linux kernel 性能优化(二)CPU 术语
- sping mvc
- 编码与乱码(05)-GBK与UTF-8之间的转换
- c++ 命名空间示例
- Dom4j --- 解析 XML 列子