- 集合框架
- 1. Collection接口
- 1.1 集合框架的顶级接口
- 1.2 是Set和List的父接口
- 1.3 但不是Map的父接口
- 集合中只能添加引用类型数据
- 2. List接口
- 2.1 特点:有序、对象可以重复 ?
- 1)有序:元素添加顺序于元素输出的顺序一致
- 2)不唯一性:可以添加重复元素
- 2.2 遍历方式
- 2.2.1 下标
- for (int i = 0; i < lst.size(); i++) {
-
-
- System.out.println(lst.get(i));
- }
-
-
- for (int i = 0; i < lst.size(); i++) {
- 2.2.2 foreach(>=jdk1.5)
- for (Object object : lst) {
-
-
- System.out.println(object);
- }
-
-
- for (Object object : lst) {
- 2.2.3 迭代器Iterator(原理)
- //获取迭代器
-
- Iterator it = lst.iterator();
- //重点
- //hasNext():判断迭代器钟的下一个元素是否存在,如果存在则为TRUE,不存在则为FALSE
- //next():移动下标并取出当前元素
- //循环遍历
- while(it.hasNext()) {
- Object val = it.next();
- System.out.println(val);
- }
-
- //获取迭代器
- 2.2.1 下标
- 2.3 List优化
- 初始容量10,负载因子1.5
- 指定初始容量
- 计算公式 容器大小*负载因子
- 向下取整
- 2.4 List元素删除
- 正向删除
- int list=lst.size();
-
- for (int i = 0; i < list; i++) {
- lst.remove(0);
- }
- for (int i = 0; i < list; i++) {
-
- int list=lst.size();
- 反向删除
- int list=lst.size()-1;
-
- for (int i = list; i >=0; i--) {
- lst.remove(i);
- }
- for (int i = list; i >=0; i--) {
-
- int list=lst.size()-1;
- 迭代器删除
-
- ListIterator it = lst.listIterator();
- while(it.hasNext()) {
- it.next();
- it.remove();
- }
- while(it.hasNext()) {
- ListIterator it = lst.listIterator();
-
- 正向删除
- 2.1 特点:有序、对象可以重复 ?
- 3. 泛型
- JDK1.5之后
- 以类型作为参数的类就叫泛型
- 作用:提高程序健壮性,简化代码
- 泛型的默认值是Object
- 4. 装箱、拆箱
- 值类型->引用类型 装箱
- int a=10;
-
- Integer b=new Integer(a);
-
- int a=10;
- 引用类型->值类型 拆箱
- int c=b.intValue();
- jdk1.5之后引入了自动装箱及自动拆箱功能
- 值类型->引用类型 装箱
- 5. ArrayList、LinkedList、Vector区别
- ArrayList:以连续的数组结构存储数据,查询快(下标)、增删改慢
- LinkedList:以链表的结构存储数据,查询慢、增删改快
- Vector:增删改查都慢,已过时
- 6.Set
- 1.1 特点:无序、对象不能重复
- 1无序:元素添加的顺序与输出的顺序不一致
- 唯一:数据是被过滤啦
- 在没有重写equals方法之前,默认比较的是object类型(引用类型),实际比较的是内存地址
- set.equals("");
- 在重写equals方法之后,先进行hashcode值是否相同,在比较equals方法
- 第一种:hashcode值相同,在进行equals比较
- 第二种:hashcode 值不同,直接返回,不进行equals比较
- 1.2 遍历
- 1.2.1 foreach
- 1.2.2 迭代器
- 1.3 常用实现类
- HashSet
- 1)元素是没有顺序的
- 2)元素是不重复的
- TreeSet:根据某种(规则)对里面的元素进行排序
- 自然比较接口: java.lang.Comparable
- 比较器: java.util.Comparator
- String以AscII码进行比较,返回差值
- LinkedHashSet:
- 1)元素是有顺序的
- 2)元素是不重复的
- 3)底层数据结构是按照链表的结构存储的 Linked
- HashSet
- hashCode
- 队列 Queue:表示一个先入先出的数据结构
- 堆栈 Stack:表示一个先进后出的数据结构
- 压:push
- 弹:pop
- 1.1 特点:无序、对象不能重复
- map集合
- 1. Map
- 1.1 特点:无序、以键值对的形式添加元素,键不能重复,值可以重复 它没有继承Collection接口
- 1.2 遍历
- 1.2.1 先取出保存所有键的Set,再遍历Set即可(2种)
- Set keys = map.keySet();
-
- System.out.println("----------获取所有的keys----------");
- keys.forEach(System.out::println);
- //2)获取所有的values(可以添加重复元素)
- Collection values = map.values();
- System.out.println("---------------获取所有值-------------");
- values.forEach(System.out::println);
-
- Set keys = map.keySet();
- 1.2.2 先取出保存所有Entry的Set,再遍历此Set即可
- Set> entrySet = map.entrySet();
-
- System.out.println("----------获取到所有键值对entrySet-----------");
- /*for (Entry entry : entrySet) {
- System.out.println(entry);//获取到所有键值对
- System.out.println(entry.getKey());//获取到key
- System.out.println(entry.getValue());//获取得到values
- }*/
-
- Set> entrySet = map.entrySet();
- 1.2.1 先取出保存所有键的Set,再遍历Set即可(2种)
- 2.HashMap与Hashtable之间的区别(重点)
- 同步(synchronized)既排队 线程安全的 hashtable
- 异步 线程非安全的 hashmap
- 地狱回调
- 3. 其它
- 3.1 Collections:帮助类,提供一组静态方法操作Collection集合
- Collections.sort(lst, new Comparator>() {
-
-
- @Override
- public int compare(Entry a, Entry b) {
- return -(a.getValue().hashCode()-b.getValue().hashCode());
- }
- });
- lst.forEach(s->{
- System.out.println(s);
- });
-
-
- Collections.sort(lst, new Comparator>() {
- 3.2 Arrays:工具类,提供了一组静态方法操作数组
- String names="zs,ls,ww";
-
- String[] name=names.split(",");
- List ls = Arrays.asList(name);
- System.out.println(ls);
- Integer[] ages= {13,14,44};
- String str=Arrays.toString(ages);
- System.out.println(str);
-
- String names="zs,ls,ww";
- 3.1 Collections:帮助类,提供一组静态方法操作Collection集合
- 1. Map