一、集合体系
1、介绍
Collection : 单列集合
子接口: List : ArrayList LinkedList
Set : HashSet TreeSet
Map : 双列集合
子接口: HashMap TreeMap
操作集合的工具类
Collections
Arrays
2、List体系
1、ArrayList
1. 容量可变,添加和删除元素时不需要改变数组大小
2. 可以通过迭代器遍历元素
add ( ) :添加元素
remove ( ) :删除元素
get ( ) :获取元素
contains ( ) :判断元素是否存在
iterator ( ) :获取迭代器
size ( ) :获取元素数量
clear ( ) :清空元素
toArray ( ) :将集合转换为数组
2、LinkedList
1. LinkedList 是一个基于链表实现的队列
iterator ( ) . next ( ) :获取迭代器的下一个元素
iterator ( ) . remove ( ) :删除迭代器的下一个元素
iterator ( ) . hasNext ( ) :判断迭代器是否还有下一个元素
addFirst ( ) :添加第一个元素
addLast ( ) :添加最后一个元素
3、ArrayList 和 LinkedList 的区别
1 、都可以存储任意类型的数据
2 、都是有序的
3 、ArrayList 采用数组存储,因此插入和删除操作比较慢,但查找速度比较快
4 、LinkedList 采用链表存储,因此插入和删除操作比较快,但查找速度比较慢
安全性:
ArrayList 是线程不安全的,因此在多线程环境下,需要对 ArrayList 进行同步处理,否则会出现数据不一致的问题.
LinkedList 是线程安全的,因此在多线程环境下,不需要对 LinkedList 进行同步处理,因此性能会更好.
4、Set体系
1、HashSet
介绍
HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。
HashSet 允许有 null 值。
HashSet 是无序的,即不会记录插入的顺序。
HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet ,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。
常用方法
add ( ) :添加元素
remove ( ) :删除元素
get ( ) :获取元素
contains ( ) :判断元素是否存在
iterator ( ) :获取迭代器
size ( ) :获取元素数量
clear ( ) :清空元素
toArray ( ) :将集合转换为数组
5、Map体系
5.1、HashMap
介绍
HashMap 是一个散列表,它存储的内容是键值对( key- value) 映射。
HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null ,不支持线程同步。
HashMap 是无序的,即不会记录插入的顺序。
HashMap 继承于AbstractMap ,实现了 Map 、Cloneable 、java. io. Serializable 接口。
常用方法
put ( ) 将键/ 值对添加到 hashMap 中
get ( ) 获取指定 key 对应对 value
values ( ) 返回 hashMap 中存在的所有 value 值。
remove ( ) 删除 hashMap 中指定键 key 的映射关系
clear ( ) 删除 hashMap 中的所有键/ 值对
6、向上向下转型
1、向上转型
Human h= new Human ( ) ;
h. eat ( ) ;
Animal a= new Animal ( ) ;
a. eat ( ) ;
Animal a= new Human ( ) ;
转型之后方法和属性的调用:
a可以调用子类和父类公用的方法(如果子类重写了父类的方法,则调用子类的方法),子类特有的方法无法调用。
a可以调用父类的属性,不可以调用子类的属性。
2、向下转型
Father f= new Son ( )
Son s= ( Son ) f;
向下转型的条件:先向上转型,再向下转型。没有经过向上转型,会提示编译错误。
转型之后方法和属性的调用:
可以调用子类的所有方法,和属性,类型转为子类,
调用的属性为子类的属性。
7、泛型
1、概念
在类定义的时候,不会给类中的变量,类中的方法参数以及方法的返回值定义数据类型,而在实例化对象的时候才会确定数据类型
2、好处
代码量减少,节省了内存资源消耗(省略了向上下转型),还会让数据更加安全(规定了输入的类型)
3、泛型符号
K :key代表键的数据类型
V :value代表值的数据类型
T :Type 的简写,代表元素的类型
E :Element 的简写,代表元素, 是一种符号,占位符
4、自定义泛型
public class Stu < T > { } 类
T id; 成员变量
public T buy ( T money) { } 方法参数, 返回值
public interface a< T > { } 接口
public class d implements a< String > 实现接口
2、泛型的上下限
< ? extends k , ? extends v > 上限
< ? super k , ? super v > 下限
public void eat ( List < ? extends Pet > list) { }
public void eat ( List < ? super Pet > list) { }
5、collections工具类
Collections . 方法名
方法:
排序:sort ( 集合名)
最大值:max ( 集合名) 返回最大值
最小值:min ( 集合名) 返回最小值
查找:
使用前需先排序
binarySearch ( 集合名, 值) 返回索引值