小白学java第42天
HashSet和TreeSet的去重机制:
1.HashSet的去重机制: hashCode() + equals(),底层先通过存入对象,进行运算得到一个hash值,通过hash值得到对应的索引,如果发现table索引所在的位置,没有数据,就直接存放如果有数据,就进行equals比较[遍历比较],如果比较后,不相同,就加入,否则就不加入
2.TreeSet的去重机制:如果你传入了一个Comparator匿名对象,就使用实现的compare去重,如果方法返回0,就认为是相同的元素/数据,就不添加,如果你没有传入一个Comparator匿名对象,则以你添加的对象实现的Compareable接口的compareTo去重
泛型:
优点:
1.编辑时检查元素类型,提高了安全性
2.减少了类型转换的次数,提高效率
3.不再提示编译警告
理解:
1.泛型又称参数化类型,是Jdk5.0出现的新特性,解决数据类型的安全性问题
2.在类声明或实例化时只要指定好需要的具体的类型即可。
3.Java泛型可以保证如果程序在编译时没有发出警告,运行时就不会产生ClassCastException异常,代码更加简洁。
4.泛型的作用是:可以在类声明时通过一个标识表示类中某个属性的类型,或者是某个方
法的返回值的类型,或者是参数类型
声明:
interface接口<T>{}和class类<K,V>{} /比如:List , ArrayList
说明:
1.其中,T,K,V不代表值,而是表示类型
2.任意字母都可以,常用T表示,是Type的缩写
实例化:要在类名后面指定类型参数的值(类型)
例如:1. List<String> strList = new ArrayList<String>{}
2. Iterator<Customer> iterator = customers.iterator{}
注意事项:
1.interface List<T>{}, public class HashSet<E>{}等等 其中T,E只能是引用类型
2.在指定泛型具体类型后,可以传入该类型或者其子类类型
3.泛型使用形式:List<Integer> list1 =new ArrayList<Integer>{}
简写:List<Integer> list2 = new ArrayList<>{}
(编译器会进行类型推断)
4.ArrayList list3 = new ArrayList()默认给它的泛型是Object