java--集合
集合特点:
1.元素类型可以不同。
2.集合长度可变。
3.空间不固定。
java中对一些数据结构和算法进行了封装即集合,集合也是一种对象,用于储存、检索、操作和传输对象。
JFC(Java Collections FrameWork)集合框架,提供了用于管理集合的接口和类
集合框架包括三个内容:接口、实现类、算法
接口: collection是list和set的父接口。其中list的特点是:线性、元素可以重复。set的特点是:元素不可以重复。
Map集合: 一个元素包含两个对象(键对象和值对象),键不能重复。
集合和数组的区别:
1.集合中只能存放对象的引用,数组可以是基本类型也可以是引用类型。
2.集合的长度可以随着元素的多少发生变化,数组创建好后,长度不能变化。
3.集合算法比较丰富,可以省去开发者很多编码,但数组算法有限。
遍历的方式:
1.for循环遍历,只能用于list集合。
2.迭代器方式,得到迭代器的算法和接口。 iterator
3.for each方式
迭代器方式,得到迭代器算法接口
Itertor<Student> it=stu.itertor();
while(it.hasNext){
Student s=is.Next();
}
list三个实现类的区别:
ArrayList:底层部分由数组实现,遍历速度快,中间插入删除速度慢。
Vector:和ArrayList类似,底层也由数组实现,但他是线程安全的类,效率较低。
LinkedList:采用双向链表实现,是不连续的内存空间,每个元素除了存放数据外,还要存放上一个和下一个元素的地址,中间插入删除熟速度快,遍历速度慢。
set集合实现类的区别:
HashSet:将元素按Hash码排列, Set <> set=new HashSet<>();
LinkedHashSet:将元素按加入顺序排列。
TreeSet:可以将元素按制定规则排列。
Map集合:
向集合中添加元素,Map.put(键,值); 根据键对象找到值对象,Student s=map.get(键);----->找不到,返回null;
遍历:
Set<String > set=map.keySet();
for(String key:set){// 打印 }
根据键.对象移除元素 map.remove(键);
Map集合实现类的区别:
HashMap:元素按键对象的Hash码排列。线程不安全,允许null键和null值;
HashTable:元素按键对象的Hash码排列。线程安全,不允许null键和null值;
TreeMap:元素按键对象的指定规则排列。
collections:算法类,主要针对List集合。
倒序:collections.reverse(list);
乱序:collections.shuffle(list);
指定规则排序:collections.sorf(list,new comparator<>()){ }
排序: comparator 算法:collections