一:集合概念
对象的容器,实现了对对象的操作,类似数组功能
二:集合和数组的区别
(1) 数组长度固定,集合长度不固定
(2) 数组可以存储基本类型数据和引用数组类型,集合只能存储引用类型数据·
.包的位置: java.util.*
COllection体系集合
三,迭代器:专门用来遍历集合的一种方式
hasNext();有下一个元素嘛有的返会true没有返回false
next(); 获取下一个元素
remove(); 删除元素
四:List接口的特点:有序有下标,可以重复
五:List常见实现类
ArrayList: | 声明方式: ArrayList name = new ArrayList( ); |
---|---|
LinkedList | LinkedList linkedList = new LinkedList(); |
ArrayList:
.数组结构实现,查询快,增删慢
.JDK1.2版本,运行效率快,线程不安全
源码分析:
DEFAULT_CAPACITY=10; 默认容量
注意:如果没有像集合中添加元素时,容量为0,添加任意一个元素之后容量为10
每次扩容扩容原来的一点五倍;
elementData 存放元素的数组
size 实际元素个数
Vector vector=new Vector();
VEctro:
.数组结构实现,查询快,增删慢
.JDK1.0版本,运行效率慢,线程安全
LinkedList linkedList = new LinkedList();
LinkedList:
.链表结构:增删快,查询慢
LinkedList linkedList = new LinkedList();
泛型
.java泛型是JDk1.5中引入的一个新特性,其本质是将参数化类型,把类型作为参数转递。
.常见形式有泛型类,泛型接口,泛型方法
.语法:
.<T,....>T称为类型站位符,表示类型的一种
.好处:
.(1)提高代码的重用性
.(2)防止类型转换异常,提高代码的安全性
泛型集合
概念:参数话类型,类型安全的集合,强制集合元素必须一致
特点;
.编译时即可检查,而非运行时抛出异常
.访问时,不必类型转换(拆箱)
.不同泛型之间不能相互赋值,泛型不存在多态
Set接口
set方法
.add() | 向集合添加新元素 |
---|---|
.addFirst() | 在集合第一位添加元素 |
.addLast() | 在集合最后一位添加元素 |
.contains() | 检测集合中是否包含括号内的元素 返回值为boolean |
.remove() | 括号填下标 删除括号下标的元素 |
.removeFirst() | 删除首位元素 |
.removerLast() | 删除末尾元素 |
在Map集合中 括号内填键名进行删除 | |
.get() | 获取元素 |
.getFirst() | 获取首位元素 |
.getLast() | 获取末尾元素 |
.set(下标,内容) | 替换掉刻下标的内容 |
.clear() | 清空集合中的数据元素 |
.size() | 返回、查询 集合中的元素个数 |
.isEmpty() | 判断是否是一个空集合 返回值为boolean |
Collections.sort© | 对集合字符或数字进行排序 |
Set<String > set = new HashSet(); //泛型String
-
HashSet:
基于hash'co'de实现元素不会重复
当存入新的哈希码相同时,会调用equals进行确认,如果结果为ture,则拒绝后者存入
TreeSet<Person> treeSet = new TreeSet(); //泛型Person
-
TreeSet:
基于排序实现元素不会重复
**实现了Sor'te'dSet接口,对集合元素自动排序**
元素对象类型必须实现Comparable接口,指定排序规则
通过compareTo方法确定接口是否为重复元素
map集合
.put(“键”,对象) | 添加数据 |
---|---|
.keySet() | 输出键集合 |
.containsKey(对象/变量或键) | 判断括号内的数据是否存在 |
Map父接口
-
特点:存储一对数据(Key-Value ),无序的。无下标,键不可以重复,值可以重复
-
方法:
-
V put(K key,V value ) //将对象存入集合,关联键值。key若重复则覆盖原值
object get (object key) //根据获取对应的值
keySet(K) //返回所有key
Collection<V>values() //返回包含的所有值的Collection集合
entrySet<Map.Entry<K,V>> //键值匹配的set集合
-
-
HashMap
-
JDK1.2版本,线程不安全,运行效率快;允许用null 作为key或是value.
-
HashMap map = new HashMap<String,String>();
-
Hashtable:
-
JDK1.0版本线程,线程安全,运行效率慢;不允许null作为key 或是value
-
-
Propertie:
-
Hashtable的子类,要求和key和value都是String。通常用于配置文件的读取
-
-
TreeMap:
-
实现了storedMap接口(是Map的子接口),可以对ke'y自动排序