Java:浮型,set

泛型

: 是对,类 ,接口后者方法的一个约束,泛型其实就是一个参数来替换所有的类型 (泛型中没有继承)
场景: 当不知道集合存什么类型的数据的时候就使用泛型

泛型里一般表示的之母:<T> <E> <W> <K> <V>

在实例化集合泛型的语法:
在jdk1.7之后 ArrayList list = new ArrayList<>(); (注意点就是后面<>里的可以省略,前面不可以进行省略)

在jdk1.7之前 ArrayList list = new ArrayList();必须这样写, 前后的泛型类型必须是一样

没有泛型的时候:
好处: 默认如果没有添加泛型,默认的是Object, 所有的数据类型都可以进行存
坏处:不安全,会报错(java.lang.ClassCastException) 强制类型转换错误

有泛型的时候:
好处: 1.避免强制转型 2.把错误由运行出错提前到编译出错
坏处: 只能够存一种数据类型
注意点:如果使用迭代器来遍历集合,迭代器的泛型必须与集合的泛型是一样的

1.泛型来约束类: public class ArrayList

语法: 访问修饰符  关键字(class) 类名<泛型>{
                     类里的具体的内容
              }

注意点 :
1.在 写这个类的具体的信息的时候,没有给其具体的类型
2. 也就是在new 的时候给其具体的类型
3.当给类加泛型之后,类里所有的都可以使用这个泛型

2.给方法来定义泛型:
作用: 也就是对方法来进行约束

 语法 :   访问修饰符<泛型> 返回值类型  方法的名称(参数(参数可以使用泛型的数据类型)){
                            方法体
              } 
              例子: 给方法加泛型的语法
        public   <T>void   printWorld(T t){
             System.out.println(t);
             }   

注意点:在调用其方法的时候知道其泛型

静态方法:也可以加泛型: 注意点:静态方法不能使用类的泛型的,只能有方法的泛型

就接口的泛型: 来约束接口

语法: 访问修饰符      interfance     接口的名称<T>{
                      抽象方法 
             }
            public interface Iter<T> {
     }

如果 接口有泛型,实现类有两种 表现形式: 第一种情况也就是:
1.实现类确定具体的泛型了
2. 实现类不能够确定其泛型(也就是在 new 的时候确定其泛型)
这种情况的语法:
public class IterUpdateImpl implements IterUpdate {}

泛型的通配符 : ? 任意的泛型
特点:
1.不能在实例化的时候给?泛型
2,一般是作为参数的类型

               <? extends E>  这种表示 是 E 泛型的子类或者是它本身
               <? super E>   这种表示是 E 泛型的父类或者它本身

Set

1.父类是Collection
2. 不能包含重复的元素
3. 无序(不能使用普通的for循环)
常规的方法跟 Collection 是一样的

子类: HashSet
1.基层存 是由哈希表结构进行存(查询速度快)
2. 不能包含重复的元素,可以包含"" 的数据 用于检查是否重复,执行了两个方法 第一个是HashCode方法 第二个是equals()方法
3.无序(不能使用普通的for循环) :存入的数据顺序与取出来的顺序不一样

HashSet 常规的一些方法 add(E e) 添加:
对set集合进行遍历 :
1.第一种使用没有泛型 转换成数组的方式
2.使用带泛型,转换成数组的方式
3.使用迭代器的方式
4.使用增强for 循环的方式
注意点:因为没有索引,索引不能够使用普通for循环

为啥set集合不能够值重复 : 实际上是使用map来进行存,是以键值对来进行存 map的键是不能够重复的
==> 实际上调用了两个方法, 一个是hashcode 方法 , 一个equals()
在这里插入图片描述

LinkedHashSet(有序):
父类是HashSet(无序)
存的方式是采用的数据+ 双重链表式
第一种链表式用于来把相同hash值的元素进行串联
第二种链表式来记录每一值的顺序
也就是它是有序的:存与取都是一致的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值