集合框架:方便对多个数组操作集合与数组的区别
集合:长度可变 存储不同类型的元素 只可以存储引用类型
数组:长度固定 储存同一种元素 可以存储基本类型,也可以存储引用类型
数据结构:数据的存储方式
PS:多个集合类的数据结构不同我们把这些集合类不断向上提取,我们就能够得到一个集合的继承体
老大Collection
功能:添加、删除、修改、获取、长度功能
添加:boolean add(Object obj)
boolean addAll(Collection c)添加一个集合的元素
删除:void clear();移除所有元素
boolean remove(Object o)移除一个元素
boolean removeAll(Collection c)
判断:boolean contains(Object obj)判断集合中包含一个元素
containsAll(Collection c)
sEmpt()是否为空
获取功能:Iteratoriterator()(重点)
Iterator it=c.iterator
it.next()
it.hainext()
长度功能:int size():元素个数
交集功能:boolean retainAll(Collection c)俩个集合都有的元素调用的集合只保存交集元素
把集合转换为数组
Object[] toArray()
List:存储和取出的元素一致,可重复(ArrayList.Vector.LinkedList)
添加功能void add(int index,Object element)指定位置添加
获取功能Object get(int index)获取指定位置的元素
列表迭代器ListIterator listIterator();list特有
接口特有功能:previous()倒着读PS:要逆向必须先正向
删除功能Object remove(int index)删除索引元素
修改功能Object set(int index,Object element)返回被修改的元素常见
数据结构:
栈、队列、数组、链表、树、哈希表面试题:常见的数据结构的优缺点栈:先进后出、压栈队列:先进先出数组:查询块,增删慢链表:由一个链子把多个节点连起来组成的数据,查询慢增删慢循环链表,双向链表,节点:数据和地址组成
ArrayList:阅读块增删慢,安全性低
删除功能:remove()
获取功能:get()set()
排序功能:sort(obj)
Vector:阅读快增删慢,安全性高
添加功能:public void addElement(Object obj)
获取功能:public Object elementAt(int index)
public Enumeration elements()
LinkedList:阅读慢增删快,安全性低
添加功能:Public void addFirst(Obj)
addlast
获取功能public Object getFirst()
删除功能Public Object removeFirst()
泛型:一种特殊的类型,把类型明确的工作推迟到创建对象或调用方法的时候才去明确类型
格式:<obj>规定这个类型
类声明命名后加方法构造调用(T t)
泛型方法:publicvoid show(T t){sysout(t); }
泛型接口第一种已经知道什么类型
第二种不知道什么类型
泛型通配符:?: 任意类型
?extends E:向下限定包括自己和子类
?super E:向上限定自己和父类
增强for(元素数据类型 变量:数组或者Collection集合)
{使用变量即可,该变量是元素}
获取出来的值不能为null
静态导入
import导包的时候类名后加方法名
Math.abs=abs;
可变参数:定义方法不知道有几个参数
方法名(数据类型... 变量名)配合增强for使用
Arrays工具类
public staticListasList(T... a)数组转集合 PS:可以初始化集合但是不可以add只能增删
set:无序不重复
Hashset:实现不重复无序的俩个hashcode(),equals();
注意:Hashset无法不重复stu类,需重写hashcode()和equals();
hashcode:return this.name.hashCode()+this.age*15;
equals(Object obj):if(this==obj){
return true;}
if(!(obj instanceof Stdent)){
return false;}
Student s=(Student) obj;
return this.name.equals(S.name) &&this.age==s.age;
LinkedHashset:底层数据结构由哈希表和链表组成,哈希保证唯一,链表保证有序
TreeSet:
自然排序:比较时候以来comepareTo()方法方法是在Comparable里面的(二叉树结构)(红黑树是一种自平衡的二叉树)
比较器排序:public TreeSet(Comparator comparator)
Map:接口顶端,它可以存储键值对的元素,唯一不重复
Map集合和Collection集合区别:
Map集合存储元素是成对出现的集合是唯一的,值可以重复指针对键有效跟值无关Collection:存储是单独的,List可重复针对元素有效
添加功能:V put(K key, V value):添加元素,K相同的时候顶到之前的V并返回被顶掉的V
putAll
删除功能:void clear();移除所有键值对。
V remove (Object key):根据键删除键值对元素,并把值返回
判断功能:boolean containsKey(Object key):判断集合是否包含指定键
boolean containsValue(Object value):判断是否包含指定值
boolean isEmpty();判断是否为空
获取功能:Set<Map.Entry<K,V>>entrySet()返回的是键值对对象的集合
V get(Object key):根据键获取值
Set<K>obj = keySet():获取集合所有键
Collection<V>obj= values();获取之后所有值
长度功能:int size():返回集合中的键值对的对数
遍历:根据键找值,根据键值对象找键和值
HashMap:是基于哈希表的Map接口实现
哈希表的作用是用来保证键的唯一性的
TreeMap:键是红黑树结构,保证唯一性
LinkedHashMap:是Map接口的哈希表和链表列表的实现,具有可预知的迭代顺序
Collections:针对集合操作工具类,都是静态方法
public static<T>void sort(List <T>list)自然排序
int binarySearch( ,T key):二分查找
T max(Collection<?> coll)最大值
void reverse(List <?>list):反转
shuffle 随机置换