------- android培训、java培训、期待与您交流! ----------
集合的由来:为了对多个对象进行操作(存储和取出),java提供了集合框架中的类供我们使用
数组和集合的区别:数组长度固定,可以存储基本数据类型,也可以存储对象
集合只能存储对象,长度可变
集合框架的体系结构:集合框架主要分为Collection和Map
Coolection集合体系继承树
Map集合体系继承树
数据结构体系
泛型:JDK1.5版本以后出现新特性。用于解决安全问题,是一个类型安全机制。
好处
1.将运行时期出现问题ClassCastException,转移到了编译时期。,
方便于程序员解决问题。让运行时问题减少,安全。,
2,避免了强制转换麻烦。
泛型格式:通过<>来定义要操作的引用数据类型。
在使用java提供的对象时,什么时候写泛型呢?通常在集合框架中很常见,只要见到<>就要定义泛型,其实<> 就是用来接收类型的。
当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。
集合的常用操作:
1.添加元素:boolean add(Object obj)、boolean addAll(Collection c)
2.删除元素:boolean remove(Object obj)、boolean removeAll(Collection c)、void clear()
3.判断功能:boolean contains(Object obj)、boolean containsAll(Collection c)、 boolean isEmpty()
4.长度:int size()
5.把集合变成数组:Object[] toArray()
6.遍历集合元素,使用迭代器Iterator;
Set集合中添加的元素是无序、不重复的元素,比较元素唯一性的根据是比较器,Set集合中添加的对象具有两种实现比较的方法,一是是对象自身具有比较性:让自定义对象实现Comparable接口,并覆写compareTo方法;二是定义一个自定义比较器,使用传入比较器的构造函数,使得集合自己本身具有比较性,自定义比较器实现Comparator接口,并覆写compare方法。
让元素自身具备比较性:
定义一个自定义比较器
Map集合:该集合存储键值对,一对一对往里存,每个键最多只能映射到一个值;
往Map集合中添加对象,使用put(K key,V value)方法,如果添加对象的key值在集合中已经存在,那么新添加的对象将会覆盖已经存在的对象,并且put方法返回原来的值。
Map集合中元素的取出有两种形式:set<v> keySet()将map中所有的键存到了set集合,因为set集合具备迭代器,可以通过迭代方式取出所有的键,再根据get方法,取出所有的值,map集合取出的原理:将map集合转换成set集合,然后利用迭代器、Set<Map.Entry<k,v>> entrySet()将map集合中的映射关系存入到了set集合中,而这个关系的数据类型是Map.Entry,关系对象Map.Entry获取后,在通过Map.Entry中的getKey和getValue来获取关系中的键和值