导图社区 javaAPI集总结List体系框架笔记思维导图
javaAPI集总结List体系框架笔记完整版分享!内容覆盖ArrayList类、linkedList类、泛型、集合加强,希望对学习Java的同学有所帮助。
网店详情页排版方法分享~包括中心页面组成,优质详情必备,详情页的排版参考方法。感兴趣的小伙伴可以看看哦~
喷绘色彩基础培训方案,内容涵盖色彩基础,喷绘写真。框架清晰,内容丰富,希望对小伙伴有所帮助哦~
酒窖营销计划方案,包括结果目标,过程目标。框架清晰,内容丰富,有需要的小伙伴可以看看哦~ 可供大家参考,借鉴,交流。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
javaAPI集合总结List体系框架笔记思维导图
ArrayList类(掌握)
ArrayList存储元素去掉重复:
案例1:ArrayList存储字符串如何去除重复元素
A:创建一个新的集合对象。
B:通过老集合获取一个迭代器对象,然后遍历老集合。
C:判断新集合中是否包含当前遍历到的元素,如果包含, 不添加,如果不包含,就把该元素添加到新集合中。
案例2:ArrayList存储自定义对象如何去除重复元素
注意事项:contains()方法判断集合中是否包含某个元素,或者 remove()移除集合中的某个元素,这两个方法的底层都是调用了 equals()方法,所以我们要在基本类(Person类)中重写equals() 方法,也不要忘记还要重写toString方法
LinkedList类
LinkedList的特有方法:
void addFirst() 和 addLast()添加
Object removerFirst() 和 removeLast();删除
Object getFirst() 和 getLast();获取
Object get(int index);根据索引获取
栈和队列的数据结构:
栈:先进后出
队列:先进先出
面试题:用LinkedList来模拟栈的数据结构
泛型
概述:泛指某种类型
好处:
1、提高安全性(把运行期异常转移到编译期)
2、不用强转了,省去强转的麻烦
格式:
<> <>中的数据类型必须是引用数据类型
注意事项:
前后泛型必须一致,或者后边的泛型可以不写(1.7的新特性菱形泛型)
ArrayList<String> list = new ArrayList<String>();
泛型的由来:
以前的集合能存的是Object类型的数据,这样什么类型的数据都可以存进集合了, 但是好多时候我们要做类型转换,这样就不安全。而泛型就是来解决这个问题的
泛型类(了解):
格式:在类名后边加泛型即可
泛型方法(了解):
注意:方法的泛型最好和类的泛型一致
分类:
非静态方法:
1、泛型可以与类的泛型一致,这样不用定义自己的泛型 public void show(T t) { }
2、泛型与类的泛型不一致,需要定义自己的泛型 public <V> void method(V v) { }
静态方法:
public static <B> void function(B b){ }
必须定义自己的泛型,为什么?
因为静态成员是随着类的加载而加载 的,类加载的时候,对象还没有创建
泛型接口(了解):
格式:在接口名后边加泛型即可
实现方式:
1、用普通类来实现 class Demo1 implements Smoke<Student> { }较常用
2、用泛型类来实现 class Test<T> implements Somke<T> { }
泛型高级之通配符(了解):
任意类型,如果没有明确,那么就是Object以及任意的Java类了
? extends E
向下限定,E及其子类
? super E
向上限定,E及其父类
集合加强
增强for(foreach):
概述:
简化数组和Collection集合的遍历
for(元素的数据类型 变量名 : 数组或者集合名){ //具体的功能代码 }
遍历集合:
1、普通for: get(),size()方法
2、迭代器。
3、增强for。底层是依赖于迭代器的
问:这三种遍历方式能不能在遍历 集合的同时,删除集合中的元素
1、普通for:
可以。但是注意索引要记得-- (减减)(看需求)
2、迭代器:
可以,但是要调用迭代器的remove()方法,不要调用集合的remove()方法。
注意:
遍历集合的同时,往集合中添加元素,如果使用的是 普通的迭代器,是不可以的,会报并发修改异常。如 果使用的是列表迭代器,是可以的,但是要使用列表 迭代器中的add()方法。
3、增强for:
不可以
静态导入:
import static 包名...类名.方法名; 可以直接导入到方法的级别
静态导入只能导入静态方法,如果有多个同名的静态 方法,容易不知道使用谁?这个时候要使用,必须加前 缀。由此可见,意义不大,所以一般不用,但是要能看懂
可变参数:
什么时候使用?
定义的方法,不知道形参的个数的时候就可以考虑使用
修饰符 返回值类型 方法名(数据类型... 变量名){ } int... b
1、可变参数底层其实是一个数组。
2、如果方法有多个参数,并且有可变参数 时候,可变参数必须放参数列表最后
集合和数组之间的相互转换:
集合转数组:
Collection集合中的toArray()方法
如果数组的长度大于集合的长度,转 换后的数组长度是数组自己的长度
如果数组的长度小于等于集合的长度 ,转换后的数组长度是集合的长度
数组转集合:
Arrays类中的asList()方法,必须用List来接收
1、数组转成集合后,集合中的元素不能添加 或删除,但是可以使用集合中的其它方法。
2、要转集合的数组必须是引用类型,如果基本类型, 会直接把该基本类型的数组当做集合中的一个元素。
ArrayList集合的嵌套:
我们学科,学科又分为若干班级,整个学科是 一个大集合,若干班级分别为每一个小集合。
关键点:
1、创建一个学科集合。 ArrayList<ArrayList<Person>> list = ArrayList<>();
2、遍历的时候,通过增强for的嵌套遍历,获取到 每一个学员,然后输出学员的信息。