Java集合框架
collection://所有单列集合中共性方法:没有索引方法
list接口://1.有序的集合2.允许储蓄重复元素3.有索引可以用for遍历
vactor集合:
ArrayList集合:
LinkedList集合:
set接口://1.不允许存储重复2.没有索引
TreeSet集合://无序集合
HashSet集合://无序集合
LinkedHashSet集合://有序集合
collection://所有集合共有的方法
public boolean add(E e);//把给定的对象放到当前集合中
public void clear();//清空集合中所有的元素
public boolean remove(E e);//把给定的对象在当前集合删除
public boolean contains(E e);//判断当前集合是否包含给定对象
public boolean isEmpty();//判断当前集合是否为空
public int size();//集合元素个数
public object[] toArray();//把集合中元素,存储到数组中
iterator接口://迭代器//取出集合元素
先判断有没有,有的话就取出来,一直判断,直到所有的取出来;
java.util.iterator;
boolean hasnext();//有返回true;
E next();//取出下一个元素 -1索引,概念
迭代器是一个接口,无法直接使用;//特殊
Collection接口中有一个方法叫做iterator();
Iterator<E> iterator();//返回上一个进行的迭代的迭代器;
1.获取迭代器
2.判断集合中有没有元素
3.取出来
增强for循环:底层也是迭代器
for(集合/数组类型 变量名:集合名){};
泛型://有静态
修饰符 <E> 返回类型 方法名 (参数列表(使用泛型)){方法体};
泛型接口;
数据类型:
栈:先进后出
队列:先进先出;
数组:查询快,增慢
红黑树:最大和最小比不能2倍;一层黑一层红(查询快)
List接口://1.有索引-取出和放进去的顺序是一致的2.允许存储重复
void add(index,element);
E get(index,element);
E set(index,element);
E remove(index,element);
ArrayList集合:查询快,增删慢;(底层数组)
LinkedList集合:查询慢,增删快(底层链表/双向链表)//不能使用多态
push();
addFirst();
addLast();//以上为添加
removeFirst();//开头
removeLast();//尾巴
pop();//第一个元素
getFirst();//获取第一个元素
getLast();//获取最后一个元素
isEmpty();//查看表中是不是空表,1/0
Vector集合:单列集合(了解);底层:数组
单线程,同步;
Set接口://不包含重复元素-没有索引-、
迭代器来遍历;
增强for循环遍历;
HashSet集合://哈希表(查询的非常快)-无序-不是同步
/*哈希值:十进制的整数由系统给的;(对象逻辑地址);
hashCode();//native:代表调用本地操作系统的方法;哈希码值;
String类重写了objct类的hashCode();
*/
集合方式来把相同的元素放到同一个数组中,然后用链表连起来,超过八位用红黑树来存储
LinkedHashSet集合://extend hashset
在hashset集合基础上再加一条链表记录元素的存储顺序;
可变参数:数据类型确定,参数个数不确定
(数据类型...变量名);//0.1.2.3.。。。底层为数组
注意:1.一个方法只能有一个可变参数
2.多个参数可变参数需写在最后;
特殊写法:
collections:
Map集合:双列;
Map<K,V>//key不能重复,一一对应
Hashmap<k,y>//哈希表,//无序集合
linkehashmap<y,v>//哈希表加链表//有序集合,取出和放进去是一致的
public V put(k key,v value);//添加
public V get(obj key);// 通过k得到v
remove(obj key);//移除
containsKey();//判断k有没有
遍历:
keyset();//把所有k取出来放到set集合
Entry<K,V>;//记录k和v,键和值的对象;
set<map.entry<k,v>>entryset();//放到一个set集合,然后再遍历
getkey();
getvalue();
自定义类型键值:
保证key唯一:需要重写两个方法,hashcode和equals方法
Linkehashmap://有序哈希表加链表(来记录元素的顺序)
Hashtable://不能为空,双链,同步,单线程,
properties集合:io流有关的集合;
最后总结:jdk9
of静态方法:直接添加元素所有集合;