集合
2020-09-04 10:22:23 0 举报
AI智能生成
Java的集合
作者其他创作
大纲/内容
泛型
泛型概念:定义一个类的时候,类型中的某些方法,返回值类型,参数类型使用一个符号表示那些尚未确定数据类型,这个符号就是泛型.
泛型的使用: <具体数据类型>
ArrayList<String> list = new ArrayList<String>();
泛型使用注意事项
前后的尖括号中具体数据类型必须一致
泛型推断: 使用泛型时可以只指定前面<>中的具体数据类型,后面的<>中可以不写,系统会自动推断出数据类型
泛型只能是引用数据类型
泛型的好处
提高安全性.编译的时候如果数据类型不一致,编译时就会报错
避免了类型强转的麻烦,也能避免产生强制类型转换异常.
泛型类
格式: 修饰符 class 类名<泛型符号1, 泛型符号2,..>{
}
泛型符号命名: 只要遵循标识符命名规范就可以, 但是一般都是一个大写字母表示; E, T, K, V, N. (NUM1, NUM2)
泛型类中泛型什么时候确定数据类型: 当你使用类创建对象的时候,才给它确定具体数据类型
泛型方法
格式: 修饰符 <泛型符号1,泛型符号2,...> 返回值数据类型 方法名(参数列表){
}
泛型方法分为两种
成员方法
很少添加泛型,因为可以直接使用泛型类中定义的泛型
静态方法
静态方法要使用泛型必须自己定义, 因为泛型类中泛型只有创建对象时才确定,静态方法加载的时机比它要早,所以不能用.
public static <T> void show(T t){
System.out.println(t):
}
泛型既可以作为方法的参数,可以作为方法的返回值.
public static <T> T show(){
T t = null;
return t;
}
泛型接口
格式: interface 接口名<泛型符号1,泛型符号2,...> {
抽象方法;
}
接口中的泛型只能作为返回值数据类型,或者参数数据类型
泛型接口的实现类有两种
实现类不是泛型类
public class 普通类 implements 泛型接口<具体数据类型>{
}
实现类还是一个泛型类
public class 泛型类<T> implements 泛型接口<T>{
}
必须泛型类中符号和泛型接口中符号一致
泛型的通配符: 本质使用通配符的目的就是为确定具体数据类型的范围
?
任意数据类型
(∞, ∞)
? super T
本类类型或者是父类类型, [本类, ∞)
? extends T
子类类型或者本类 (∞ 本类]
迭代器 Iterator
hasNext()
判断是否有下一给元素
应用:将该方法放入到while()条件中
next()
指针下移
结构图
Collection(接口)
实现了Iterable,所以可以使用迭代器和for each进行遍历
遍历方式:
Iterator<E> iterator() 转换为迭代器
注意:遍历的时候一定要保证每次循环 next() 方法只执行一次
增强for循环
Set(接口) 不可以重复 ,没有索引
HashSet
特点:无序 通过hash桶存储对象,要求被存储的对象所属类必须重写hashCode和equals方法
LinkedHashSet
特点: 迭代顺序和存放顺序一致 通过hash桶存储对象,要求被存储的对象所属类必须重写hashCode和equals方法
TreeSet
特点:自然排序
存储对象的前提
对象所属类实现Comparable,重写CompareTo(obj)方法
在TreeSet构造方法中传入实现了Compartor接口的实例,重写Compare(obj1,obj2),一般情况下可将该类写成 匿名内部类
List(接口) 可以重复 有序 有索引
ArrayList
特点:底层是数组,方便查询,但不方便删除,插入操作
Vector
特点:和ArrayList类似,但是线程安全,效率低
同步
LinkedList
特点:双向链表格式,方便删除,插入操作,查询效率比较低
遍历方式:
因为有 public E get(int index) 方法,所以 在Collection遍历方式的基础上,多了一种根据索引遍历的方式,使用for循环遍历
特殊点:因为有 索引,因此有 get(int index) 通过索引获取元素的方法
Map(接口)
特点:有键有值,键不可以重复,值可以重复
遍历的方式:
通过keySet()将键放入到集合中,通过每次遍历的键获取值
比较灵活
通过Values() 将所有的值放入到集合中,进行遍历
只能遍历值,不能遍历键
通过EntrySet() 将 键值对放入到集合中,遍历
返回Set<Map.Entry>
K getKey()返回与此项对应的键
V getValue()返回与此项对应的值
存放的是键值对
HashMap
无序迭代,允许null值,null键
LinkedHashMap
迭代顺序和存放顺序一致
Hashtable
无序迭代,不允许null键,不允许null值,线程安全
同步
0 条评论
下一页