框架:为了实现某一种特定功能而预先设计好的一系列具有继承或实现关系的类与接口,
操作是可以直接从高层进行开发而不必关注底层的实现。
java的集合框架简称为:JCF
工具类:
Collections(操作集合)
Arrays(操作数组)
比较器:
Comparable
Comparator
集合框架的核心接口:Collection
增:add();
删:remove();
查:get();
改:set();
获取长度:size();
List:列表,
ArrayList 和 LinkedList:1、用法上两者的API完全相同
2、调用以后的效果也是一样的。
区别:两个类在底层的实现上,ArrayList采用的是数组的方式进行存
储;LinkedList采用的是双向链表的方式
这种区别造就了两个类使用场景不同:
ArrayList适用于做大量的查询动作,或往尾部添加和删除数据
LinkedList适用于做大量的往中间添加和删除数据
辨析:ArrayList\LinkdeList\Vector
Vevtor也是List分支,是ArrayList的兄弟类,底层实现也是数组
不同于ArrayList的是它是线程安全的,效率低。
特点:线性,以有序的方式存放数据,有下标
Set:集,不能存放重复元素;非线性,即无序,无下标。
代码要求:掌握HashSet
同样支持泛型
HashSet:1、提供了增、删的行为,删除也只能按对象删除
2、没有修改和查询指定元素的行为(因为没有下标)
3、不接受普通for循环
set集合如何判断两个元素重复:
1、它不是判断两个对象是否是统一个对象
2、而是先调用两个对象的hashcode方法,判断是否返回同一个值,然后再调用equals方法判断是否返回true;
-----所以根据规范,重写equals方法,同时也要重写hashcode方法
Map:映射
代码要求:掌握HashMap
特点:无序,不能存放重复元素,里面的数据按K V对进行存放,K不能重复,V可以重复
通过K找V,没有下标
//增:----必须保证键不一样
K<String 类型可变> V<StudentBean 类型可变>
map.put("J136001",new studentBean("乾隆",24,28) );
//获取元素个数: vcv
map.size();
//删-----根据键进行删除,如果键不存在不会报异常,只会删除失败
map.remove("J136001");
//改-----仍然调用put方法,修改传入键所对应的值
map.put("J136001",new studentBean("康熙",24,28) );
//查----根据键查找值
StudentBean stu = map.get("J136001");
//遍历----不能直接遍历map,只能单独遍历map的所有的键或所有的值
所以在遍历前,需要得到所有的键或所有的值
Set<String> keys = map.keySet; -----得到所有的键
Collection<StudentBean>values = map.values();----得到所有的值
泛型:---集合框架类在默认情况下是可以操作任意数据类型的(Object),这本来是集合要解决的数组三大问题之一。但是在实际操作中,往往我们会把相同数据类型放到一起做统一处理。因此泛型就是用来限制某个集合对象只能存放某种类型的元素。所有的集合都可以加泛型。
Collection接口和Iterator接口
迭代器---Iterator---以前主要用于没有下标的集合类完成遍历,现在被for-each替代