(点击跳转即可哦)
java学习专栏
LeetCode刷题专栏
文章目录
- 泛型的应用
- 泛型的引出
- 集合框架初识
- List
定义泛型对象时,只能使用类
基本类型不能保存到泛型中,必须使用包装类
泛型的引出看下面这个代码
class Point{
x;
y;
}
若x = 10, y = 20,
x = 10.1,y = 20.1
x = “你”,y= “我”,在Java中,Java是一个强类型语言,在定义x,y时,必须强制定义变量类型,那此时x,y 该定义为什么类型呢?
应该定义为泛型
泛型,在编译阶段检查类型是否一致的手段。
所谓的泛型指的是在类定义时不明确类型,在使用时明确类型
定义泛型使用"<>"操作符
称为类型参数,
<>中间可以使用任何字符,规范是单个的大写字母
T : 表示任意类型
K : 键值对,key值
V : value 值
E :单个元素
public class Point(){ //x,y这两个成员变量的类型不定,在产生Point对象时,明确x,y的类型 T x; T Y; public static void main(String[] args){ //此时设置的类型为字符串 Point point = new Point<>(); point.x = "张三"; point.y = "李四"; System.out.println(point.x); System.out.println(point.y); } }
当定义为Point
一般来说,我们要求把所以的错误都提前暴露在编译阶段,程序还没有跑起来就能够发生错误。
我们发现,引入泛型后,可以在编译阶段检查设置的类型值是否 是指定类型,若不一致,编译报错,取出值的时候,就无需再进行强转。
若泛型类中存在多个类型参数,成员变量的类型不一定一致。
//使用不同的大写字母来指代不同类型 public class Point{ T x; E y; public static void main(String[] args){ Point p1 = new Point<>(); x = "张三"; y = "李四"; Point p2 = new Point<>(); x = "年龄"; y = 18; } }
此时是不会报错的。
在产生对象时,T和E的类型可以相同,也可以不同。
集合框架初识
所谓的集合就是用来保存和操作数据的一些类。
Collection :线性表集合,保存单个同类型的元素
List : 线性结构
Queue : 队列
Deque : 双端队列
Map: 键值对集合
以上都是接口
ArrayList(动态数组) 和 LinkedList (双向链表)是 List的具体实现子类
List
List - 线性表的父接口
常用子类: —ArrayList(底层是一个动态数组实现的线性表)
— LinkedList(底层是一个双向链表实现的线性表)
Listlist = new LinkedList<>(); List list = new ArrayList<>();
List 接口中定义的方法,子类在实现时,都需要进行覆写,使用时更换子类非常简单,只需要更换new 的子类对象,在使用时没有任何区别,使用方法都是在接口中定义好的。
List定义的方法,
//尾插 e
boolean add(E e)
//将 e 插入到 index 位置
void add(int index, E element)
//尾插 c 中的元素
//boolean addAll(Collection< ? extends E> c)
//删除 index 位置元素
E remove(int index)
//删除遇到的第一个 o
boolean remove(Object o)
//获取下标 index 位置元素
E get(int index)
//将下标 index 位置元素设置为 element
E set(int index, E element)
//清空
void clear()
//判断 o 是否在线性表中
boolean contains(Object o)
//返回第一个 o 所在下标
int indexOf(Object o)
//返回最后一个 o 的下标
int lastIndexOf(Object o)
//截取部分 list
List subList(int fromIndex, int toIndex)
二维数组
//二维数组 int[][] arr = new int[][]; List> list = new ArrayList<>(); List
l1 = new ArrayList<>(); l1.add(1); l1.add(2); l1.add(3); List l2 = new ArrayList<>(); l2.add(4); l2.add(5); l2.add(6); list.add(l1); list.add(l2); System.out.println(list);
输出结果:
[[1,2,3],[4,5,6]]
要是对大家有所帮助的话,请帮我点个赞吧。



