0819总结

0819总结

泛型

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

//在jdk1.7之后
ArrayList<Integer>  list  =  new ArrayList<>();
注:后面<>里的可以省略,前面不可以省略
//在jdk1.7之前
ArrayList<Integer>  list  =  new ArrayList<Integer>();
//前后的泛型类型必须一样
没有泛型

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

有泛型

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

泛型约束类
public class ArrayList<E> { }

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

泛型约束方法
 public <T> void printWorld(T t){ }     

作用:对方法进行约束
注意点:
在调用其方法的时候就知道其泛型
静态方法不能使用类的泛型的

泛型约束接口
public interface Iter <T> { }

接口有泛型的两种表现形式:
1、实现类确定具体的泛型了
2、实现类不能够确定其泛型(也就是在 new 的时候确定其泛型) 语法如下:

 public class IterUpdateImpl<T> implements IterUpdate<T> {}
 //开发里常用
泛型的通配符

? :表示任意的泛型

特点:
1、不能在实例化的时候给?泛型
2、一般是作为参数的类型

<? extends E> //表示 E 泛型的子类或者是它本身

<? super E>  //表示 E 泛型的父类或者它本身

Set

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

HashSet

1、基层存的是由哈希表结构进行存(查询速度快)
2、不能包含重复的元素,可以包含空("")的数据
用于检查是否重复,执行了两个方法: HashCode 方法和 equals() 方法【可以直接用Alt+Insert点出来】
3、没有顺序(不能使用普通的for循环,并且存入的数据顺序与取出来的顺序不一样)

HashSet的常规方法:
添加:add(E e)
对set集合进行遍历:

// 没有泛型转换成数组
Object [] obj=set.toArray();
for (Object o:obj){
    System.out.println(o);
}
// 带泛型转换成数组
Set  <String >set=new HashSet<String>();
String [] str=set.toArray(new String[]{});
    for (int i=0;i<str.length;i++){}
    System.out.println(set);
// 迭代器
Iterator ite=set.iterator();
while (ite.hasNext()){
    System.out.println(ite.next());
}
// 增强 for 循环
for (Object obj :set){
    System.out.println(obj);
}

注意:因为没有索引,所以不能够使用普通for循环

set 集合不能有重复的值

实际上是使用map来进行存,是以键值对来进行存 map的键是不能够重复的。(实际上调用了两个方法,一个是 hashcode 方法 ,一个 equals())

LinkedHashSet(有序)

父类是HashSet(无序)

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

作业

若类里面的成员属性用 final 修饰:

1、只使用有参构造 。
2、使用无参构造的话,要先给该成员属性赋初始值,否则报错!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值