刷了一道Leetcode题和三道蓝桥杯练习题。题解
java学习
一、集合类体系结构
二、Collection集合:
1.概述
(1)是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection元素
(2)JDK不提供此接口的任何直接实现,它提供更具体的子接口(例如Set和List)实现
2.创建Collectin集合的对象方式
(1)多态的方式
(2)具体的实现类ArrayList
三、 List集合
1.概述
(1)有序集合(也称序列),存储和取出的元素顺序一致。用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引访问元素并搜索列表中的元素
(2)与Set集合不同,列表通常允许重复的元素
四、 Set集合
1.概述
(1)不包含重复元素的集合
(2)没有带索引的方法,所以不能使用普通for循环遍历
(3)实现类:HashSet(对迭代顺序不保证)
2.实操
五、HashSet集合
1.概述
(1)底层数据结构是哈希表
(2)对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的元素顺序一致
(3)没有带索引的方法,所以不能使用普通for循环遍历,只能用增强for
(4)由于是Set集合,所以是不包含重复元素集合
注意:如果是自定义类中的对象的话,就可以出现重复元素,因为Set判重的原理是利用map,而map的key是调用hashcode得到的,但相同字符串,不同对象生成的hashcode值是不同的,因此可以出现重复类当中的对象。
2.实操
六、LinkHashSet集合
1.概述
(1)哈希表和链表实现的Set接口,具有可预测的迭代次序
(2)由链表保证元素有序,也就是说元素的存储和取出顺序一样的
(3)由哈希表保证元素唯一,也就是没有重复元素
2.实操
七、泛型
1.概述:
(1)本质是参数化类型,也就是说所操作的数据类型被指定为参数
(2)将类型由原来的具体的类型参数化,然后再使用/调用时传入具体的类型。这种参数类型可以用在类、方法和接口中,分别成为泛型类、泛型方法、泛型接口
2.好处
(1)把运行时期的问题提前到了编译期间。例如:在用迭代器遍历集合的时候,如果集合中的类型和接受的类型不一致就会报错,如果使用泛型的话,在往集合中加入元素的时候就会报错。
(2)避免了强制类型转换
八、IDEA小技巧:ALT + Insert :自动生成toString、getter和setter等方法
九、泛型类
平时我们要对一个对象进行调用setter或者getter构造的时候,都需要传入的类型跟对象的类型是一致的,不然就会报错。可如果采用泛型类的话,把成员也采用泛型,这样的话,创建对象时指定什么类型,这个类就是什么类型,传对应类型的参数就可以了。
十、泛型方法
解决的问题,泛型类也可以解决。可是泛型类实在创建对象的时候明确类型。而泛型方法的话,在创建对象的时候不指定类型,只有在调用方法的时候才指定类型。