摘要:什么是泛型泛型有占位符,表示当前的类是一个泛型类这样我们就可以将这个类的其他部分用替换掉了,使用时就可以更加的方便。
目录
接下来我们就来看一段代码
我们会发现当把MyArrayList中定义int类型的数组时,向其中添加的元素就只能是int类型,添加其他类型就会报错,而当我们用Object类型代替时,Object过于通用。针对上述问题,我们引入泛型来进行修改,让代码更加的通用。
泛型有
占位符,表示当前的类是一个泛型类
class MyArrayList{}
这样我们就可以将这个类的其他部分用
class MyArrayList{ public T[] elem; public int useSize; public MyArrayList(){ this.elem=(T[]) new Object[10]; } public void add(T value){ this.elem[useSize]=value; this.useSize++; } public T get(int key){ return this.elem[key]; }}
注意:
this.elem=(T[]) new Object[10];不能写成this.elem=new T[10];
java的底层数组有一定的问题ArrayList
定义的里面的类容只能是String类型,自动对类型进行检测:
可以自动对类型进行转换:
String s=myArrayList.get(0);
注意:泛型的泛型参数只能是类类型或者简单类型的包装类。
泛型的擦除机制:
当我们编写一个新的类时我们进行对比我们会发现
MyArrayList myArrayList=new MyArrayList<>();System.out.println(myArrayList); Person person=new Person<>();System.out.println(person);
它们的结果并没有泛型,这是我们可以得出泛型只存在于编译期间,而不存在于运行期间。运行时会将T变为Object类。
包装类就是对基本数据结构进行包装,使它们拥有一定的方法更方便的满足使用。
基本数据类型和包装类的关系如下图所示:
基本数据类型 | 包装类 |
int | Integer |
char | Character |
double | Double |
float | Float |
byte | Byte |
short | Short |
long | Long |
boolean | Boolean |
手动封箱和开箱
int i=10;//手动封箱Integer integer=Integer.valueOf(i);Integer integer1=new Integer(i);//手动开箱int a=integer.intValue();
自动封箱和开箱
//自动封箱Integer i=10;//自动开箱int m=i;
List list=new ArrayList<>();list.add(1);//尾插法list.add(1,12);//插入相应的位置List list1=new ArrayList();list1.add(1);list1.add(2);list1.add(3);list1.add(4);list.addAll(list1);//将list1中的所有元素放入list中末尾
List list=new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);list.remove(1);//对下标进行删除System.out.println(list);//[1, 3, 4, 5]
List list=new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);System.out.println(list.get(2));//3System.out.println(list.set(1, 10));//2
List list=new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(2);list.add(1);System.out.println(list.contains(1));//为1的值是否在list里面System.out.println(list.indexOf(1));//查找当前数 0System.out.println(list.lastIndexOf(1));//从后向前 4
List list=new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(2);list.add(1);//对于部分数组的截取List list1=list.subList(1,3);System.out.println(list1);//[2, 3]list.clear();//对于数组的清空System.out.println(list);//[]
//无参构造List list=new ArrayList<>();//指定初始容量List list1=new ArrayList<>(5);//使用list1中的初始容量List list2=new ArrayList<>(list1);//无参构造List list3=new LinkedList<>();
力扣链接:杨辉三角。
什么是杨辉三角?
像这种形式不断累加的就是杨辉三角。
接下来就是对于杨辉三角的代码实现:
import java.util.ArrayList;import java.util.List;public class practice03 { public static List> Replace(int num){ List> list=new ArrayList<>(); int[][] add=new int[num][num]; for(int i=0;i list1=new ArrayList<>(); for(int j=0;j<=i;j++){ if(j==0||j==i){ add[i][j]=1; }else { add[i][j]=add[i-1][j]+add[i-1][j-1]; } list1.add(add[i][j]); } list.add(list1); } return list; } public static void main(String[] args) { List> list=Replace(3); System.out.println(list); }}
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/121244.html
摘要:今天我们就来解读一下的源码。比较有意思,将定时器以方式提供出来,并且提供了方法。实现方式是,在组件内部维护一个定时器,实现了组件更新销毁时的计时器更新销毁操作,可以认为这种定时器的生命周期绑定了组件的生命周期,不用担心销毁和更新的问题。 1. 引言 React PowerPlug 是利用 render props 进行更好状态管理的工具库。 React 项目中,一般一个文件就是一个类,...
摘要:另外,这些中的每一个都是纯函数,有返回值。例如,如果要计算整数列表的累积乘,或者求和等等基础语法参数是连续作用于每一个元素的方法,新的参数为上一次执行的结果,为被过滤的可迭代序列返回值最终的返回结果在中,是一个内置函数。 简洁的内置函数 大家好,我又回来了,今天我想和大家分享的是Python非常重要的几个内置函数:map,filter,reduce, zip。它们都是处理序列的便捷函数...
摘要:在学习之前,我们必须对的作用和使用方法有所了解,可以参考我前一篇文章快速理解中的用法与陷阱。和的作用十分相似,只是参数类型上的差别,以适应不同的使用场景。 在学习apply()之前,我们必须对this的作用和使用方法有所了解,可以参考我前一篇文章《快速理解JavaScript中this的用法与陷阱》。当然如果你已经熟悉this的相关知识,那么请直接往下看。 call()和apply()...
摘要:正文工具类是包中的一个工具类,主要功能是对集合及其元素进行操作。这篇文章算是对官方文档的总结和归纳,也加以自己的思考,也是面试题之一,希望自己能在之后不会再吃这道题的亏。 本文首发于cartoon的博客 转载请注明出处:https://cartoonyu.github.io/c... 推荐一篇不错的博文https://gitee.com/SnailClimb/Jav...
摘要:我们有这么一个场景,给你一个列表,可以动态的新增,但是最终要求列表升序,要求长度小于,可以怎么做这个还不简单,几行代码就可以了测试验证上面的代码先不考虑性能的优化方面,有没有问题写了个简单的测试,我们来看下会出现什么情况启动参数修改 我们有这么一个场景,给你一个列表,可以动态的新增,但是最终要求列表升序,要求长度小于20,可以怎么做? 这个还不简单,几行代码就可以了 public Li...
阅读 1882·2021-11-24 09:39
阅读 1153·2021-10-11 10:59
阅读 1091·2021-09-27 13:35
阅读 2332·2021-09-24 10:28
阅读 3151·2021-09-08 09:45
阅读 1067·2021-09-07 10:06
阅读 1464·2019-08-30 15:53
阅读 1886·2019-08-30 15:53