java 集合篇
2015-06-23 15:36
399 查看
java语言的java.util包中提供了一些集合类。这些集合类又被称为容器。集合类与数组不同之处是,数组的长度是固定的,集合的长度是可变的;数组用来存放基本类型的数据,集合用来存放对象的引用。
List集合;
其中List与Set实现了Collection接口。各接口还提供了不同的实现类。
![](http://img.blog.csdn.net/20150623153632246?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGhoaGhoaGh1YW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。
![](http://img.blog.csdn.net/20150623154005653?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGhoaGhoaGh1YW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
List:可存放重复元素,元素存取是有序的。
Set:不可以存放重复元素,元素存取是无序的。
Vector:线程安全,但速度慢,已被ArrayList替代。
ArrayList:线程不安全,查询速度快。
LinkedList:链表结构,增删速度快。
get(int index):通过脚标获取元素。
iterator():通过迭代方法获取迭代器对象。
迭代是取出集合中元素的一种方式。因为Collection中有iterator方法,所以每一个子类集合对象都具备迭代器。
迭代器的next方法是自动向下取元素,要避免出现NoSuchElementException。
迭代器的next方法返回值类型是Object,所以要记得类型转换。
HashSet:线程不安全,存取速度快。
TreeSet: 线程不安全,可以对Set集合中的 元素进行排序。
TreeSet:通过compareTo或者compare 方法中的来保证元素的唯一性。元素是以二叉树的形式存放的。
Map与Collection在集合框架中属并列存在
Map存储的是键值对
Map存储元素使用put方法,Collection使用add方法
Map集合没有直接取出元素的方法,而是 先转成Set集合,在通过迭代获取元素
Map集合中键要保证唯一性
get( Object key) 如果存在指定的键对象,则返回该对象对应的值,否则返回NULL。
每个键最多只能映射到一个值。
Map集合中元素是通过key、value进行存储的,要获取集合中指定key值或value值,需要先通过相应的方法获取key集合或value集合,再遍历key集合或value集合获取指定值。
Hashtable:线程安全,速度慢,不允许存放null键,null值,已被HashMap替代。
HashMap:线程不安全,速度快,允许存放null 键,null值。
TreeMap:对键进行排序,排序原理与TreeSet 相同。
常用的集合有:
List集合;
Set集合;
Map集合;
其中List与Set实现了Collection接口。各接口还提供了不同的实现类。以下是集合继承图:
为什么出现集合类?
面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。
集合类的特点 :
集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。集合关系的分析:
集合框架中的常用接口
Collection接口有两个子接口:
List(列表) ,Set(集)List:可存放重复元素,元素存取是有序的。
Set:不可以存放重复元素,元素存取是无序的。
List接口中常用类:
Vector:线程安全,但速度慢,已被ArrayList替代。ArrayList:线程不安全,查询速度快。
LinkedList:链表结构,增删速度快。
取出LIst集合中元素的方式:
get(int index):通过脚标获取元素。iterator():通过迭代方法获取迭代器对象。
迭代是取出集合中元素的一种方式。因为Collection中有iterator方法,所以每一个子类集合对象都具备迭代器。
iterator用法:(用之前写的例子)
//实例数组,添加数据 ArrayList<String> alist = new ArrayList<String>(); alist.add("a"); alist.add("b"); alist.add("c"); alist.add("d"); alist.add("f"); //因为迭代器的使用需要返回一个iterator,所以要声明一个iterator。 Iterator<String> iterator = alist.iterator(); //判断条件,判断是否还有数据,如有,则执行循环体。 while(iterator.hasNext()){ //将下一个数据赋值给result,输出 String result = iterator.next(); System.out.println(result);
迭代注意事项:
迭代器在Collcection接口中是通用的,它替代了Vector类中的Enumeration(枚举)。迭代器的next方法是自动向下取元素,要避免出现NoSuchElementException。
迭代器的next方法返回值类型是Object,所以要记得类型转换。
Set接口中常用的类:
HashSet:线程不安全,存取速度快。TreeSet: 线程不安全,可以对Set集合中的 元素进行排序。
Set集合元素唯一性原因
HashSet:通过equals方法和hashCode 方法来保证元素的唯一性。TreeSet:通过compareTo或者compare 方法中的来保证元素的唯一性。元素是以二叉树的形式存放的。
Map集合
Map与Collection不同:
Map与Collection在集合框架中属并列存在Map存储的是键值对
Map存储元素使用put方法,Collection使用add方法
Map集合没有直接取出元素的方法,而是 先转成Set集合,在通过迭代获取元素
Map集合中键要保证唯一性
Map集合存储于取出元素的方式
put( key k , value v)向集合中添加置顶的key与value的映射关系get( Object key) 如果存在指定的键对象,则返回该对象对应的值,否则返回NULL。
Map集合的特点:
Map接口提供了将键映射到值的对象,一个映射不能包含重复的键。每个键最多只能映射到一个值。
Map集合中元素是通过key、value进行存储的,要获取集合中指定key值或value值,需要先通过相应的方法获取key集合或value集合,再遍历key集合或value集合获取指定值。
Map集合中常用类
Hashtable:线程安全,速度慢,不允许存放null键,null值,已被HashMap替代。HashMap:线程不安全,速度快,允许存放null 键,null值。
TreeMap:对键进行排序,排序原理与TreeSet 相同。
相关文章推荐
- java关键字及分类
- java 三次样条插值 画光滑曲线 例子
- 关于ActionContext.getContext()的用法心得
- java 排序
- 设置按钮的位置
- java加载class文件(类加载机制)
- 怎么解决java.lang.NoClassDefFoundError错误
- 安装 Struts2 在 RHEL x64
- 安装Eclipse 在 RHEL5 x64
- 20Spring切面的优先级
- 安装 JDK 1.6 在 RHEL x64
- 《Java并发编程实践》笔记1——并发编程基础
- Java编程中“为了性能”需做的26件事
- JAVA菜鸟入门(18) Set的Iterator
- MyEclipse卡死解决
- 基于Spring框架的Shiro配置
- java生成二维码
- Java笔记:for循环
- eclipse-debug时直接进入/不进入/提示进入调试页面修改
- 在java中实现日期类型和字符串类型的转换大全(Date String Timestamp Datetime)