Java集合框架
来源:互联网 发布:js面向对象继承 编辑:程序博客网 时间:2024/06/06 03:46
---------------------- android培训、java培训、期待与您交流! ----------------------
java集合框架
集合是用来存储对象的容器,和数组类似,优点在于长度可变. 可以存储多种类型的数据.
一.集合分类
1.Collection:单列集合,一次存储一个对象.
List:可重复,可以根据索引操作.
*ArrayList:数组结构, 查找快
*LinkedList:链表结构, 增删快
Vector:数组结构,线程安全, 效率低
Set:不可重复,不能根据索引操作.
*HashSet:使用哈希算法对元素去重复, 效率高
*TreeSet:在指定排序算法之后, 以二叉树形式进行存储,对元素进行排序
LinkedHashSet:HashSet的子类,原理相同, 但是添加了保留存储顺序的功能
2.Map:键值对,可以通过键对象查找值.
*HashMap:去重复, 效率高
*TreeMap:排序
LinkedHashMap:保留存储顺序
Hashtable:和HashMap原理相同,线程安全, 效率低 . Hashtable中的键和值都不能为null
Properties:通常用来操作配置文件, Hashtable的子类.
Collection:
Ⅰ.List集合
List集合是一种有存储顺序,并且可以重复的容器
*1.List的常用方法
添加元素
booleanadd(E e)
voidadd(int index, E element)
booleanaddAll(Collection<? extends E> c)
删除元素
Eremove(int index)
booleanremove(Object o)
voidclear()
替换元素
Eset(int index, E element)
获取元素
Eget(int index)
获取长度
intsize()
*** 2.List的迭代
a.普通for循环
由于List是有序的,可以通过索引获取元素, 所以可以定义for循环,从0循环到size()-1,每次获取1个元素
b.迭代器
调用List的iterator()方法获取迭代器,然后调用hasNext()方法判断是否包含下一个元素,调用next()获取下一个元素
c.增强for循环
* List集合的实现类
1.ArrayList
数组实现,查找快, 增删慢
2.LinkedList
链表实现,增删快, 查找慢
3.Vector
原理和ArrayList相同,线程安全, 效率低
Ⅱ.Set集合
1.什么是Set集合
Set集合中素没有存储顺序,不可重复.
*2.Set集合的常用方法
添加元素
booleanadd(E e)
booleanaddAll(Collection<? extends E> c)
删除元素
booleanremove(Object o)
voidclear()
获取长度
intsize()
获取迭代器
Iterator<E>iterator()
*** 3.Set集合的迭代
a.使用迭代器
b.增强for循环
4.常用的Set类
*** a.HashSet
去重复, 速度快
HashSet在存储元素的时候,先调用对象的hashCode方法,计算一个哈希值, 然后在集合中查找是否有哈希值相同的对象
如果没有哈希值相同的对象,直接存入
如果有哈希值相同的对象, 则和哈希值相同的对象进行equals比较
equals比较结果为false就存入
equals比较结果为true则不存
如果我们想在HashSet中存储自定义对象,并且去重复, 那么这个自定义的类必须重写hashCode和equals方法.
*** b.TreeSet
去重复, 排序
在向TreeSet中存储元素的时候,TreeSet会使用指定的比较算法对存储元素进行排序,内部以二叉树形式进行存储.
指定比较算法的方式:
自然顺序: 在类上实现Comparable接口,重写compareTo方法,在方法中定义比较算法.
比较器顺序: 定义类实现Comparator接口,重写compare方法,创建比较器对象, 传入TreeSet构造函数.
如果我们想在TreeSet中存储自定义对象,并且排序, 要么这个自定义的类实现Comparable接口,要么在TreeSet中传入Comparator.
c.LinkedHashSet
去重复, 保留存储顺序
是HashSet的子类,同样使用哈希算法进行去重复.
Ⅲ.Map集合
常用方法:
存储键值对
Vput(K key, V value)
根据键获取值
Vget(Object key)
获取键对象组成的Set
Set<K>keySet()
获取键值对组成的Set
Set<Map.Entry<K,V>>entrySet()
清空所有键值对
voidclear()
判断是否为空集合
boolean isEmpty()
判断是否包含指定的键对象
boolean containsKey(Object key)
判断是否包含指定的值对象
boolean containsValue(Objectvalue)
将另一个Map中的键值对全部添加到当前Map
void putAll(Map<? extends K,?extends V> m)
根据键对象删除键值对,返回值对象
V remove(Object key)
获取所有值对象组成的Collection集合
Collection<V> values()
***二.集合的迭代
*1.Collection:
迭代器:使用iterator()得到Iterator对象,调用hasNext()和next()方法进行迭代.
增强for循环: JDK5之后,能用迭代器迭代的类都可以使用增强for循环,语法为: for (元素类型 变量名 : 容器) {循环体 }
2.List
除了Collection的2种通用迭代方法,还可以使用普通for循环,从0循环到size()-1位置,每次调用get(int)方法获取一个元素
3.Vector
除了以上3种方式,还可以使用Enumeration,通过elements()方法获得对象,调用hasMoreElements()方法和nextElement()方法进行迭代.
*4.Map
keySet:调用keySet()方法获取一个由所有键对象组成的Set集合,迭代Set集合获取每一个键对象,再使用键对象获取值对象.
entrySet:调用entrySet()方法获取一个由所有Entry对象组成的Set集合,迭代Set集合获取每一个Entry对象,再通过Entry对象获取键和值.
---------------------- android培训、java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima
- Java集合:集合框架
- 【Java】java集合框架
- [Java]Java集合框架
- JAVA集合框架和集合
- 【集合】Java集合框架介绍
- Java集合之集合框架
- [集合]Java的集合框架 Collection集合
- Java集合框架 (一)
- Java集合框架 (二)
- Java集合框架(三)
- Java集合框架
- 也来谈Java集合框架
- 也来谈Java集合框架
- Java集合框架 (一)
- Java集合框架
- 也来谈Java集合框架
- java集合框架
- Java集合框架总结
- oracle 的三层查询分页
- Excel 时分秒 换算成秒
- 【OpenCV】数字图像灰度直方图
- 32位系统下使用Windows 7 USB DVD Download Tool创建64位win7系统安装U盘
- OpenGL立体五边形之二
- Java集合框架
- 堆、栈、自由存储区、全局/静态存储区和常量存储区
- 评论:Facebook COO告诫哈佛校友:寻找职业火箭船
- Android的px、dip、sp的区别
- 浅谈设计的“基础”是什么?
- magento中如何使用Prototype对form进行验证
- OpenGL绘制有立体感的五边形
- xtu1142 3n + 1
- 常见设计模式的解析和实现(C++)之十四-Command模式