ArrayList的使用和源码分析
1.基本数据类型和包装类
这里面包装类就是基本数据类型的首字母大写,除了Integer和Character。
在这里我们就介绍一下装箱和拆箱的意思。
装箱也叫装包:把简单类型变为包装类类型
拆箱也叫拆包:把包装类类型变为简单类型
举例:
public static void main(String[] args) { Integer a = 123;//装箱 装包 int b = a;//拆箱 拆包(隐式的) System.out.println(a+" "+ b); System.out.println("================"); //显式的装包 Integer a2 = Integer.valueOf(123); Integer a3 = new Integer(123); //显式的拆包 int b2 = a2.intValue(); double d = a2.doubleValue(); }
接下来我们来看一个例题:
那么为什么两个的结果不相同呢?
那么我们就来看看后台将int类型转化为Integer类型的valueOf方法的源码:
我们可以看到如果i>=low=-128值 或者 i<=high=127,就会返回一个值。
因为返回的是一个cache[ ]的数组,因此我们计算一下其取值范围:
因此只要是0到255之间的值,都是返回true,其他都是返回false。
2.List的使用
2.1尾插e
public static void main(String[] args) { List<String> list = new ArrayList<>(10); ArrayList<String> list2 = new ArrayList<>(); list2.add("hello"); list2.add("bit"); list2.add("hehe"); System.out.println(list2); //使用另外一个Arraylist对list3初始化,前后必须保持一样的类型 ArrayList<String> list3 = new ArrayList<>(list2); list3.add("hanghang"); System.out.println(list3); }
2.2打印List
2.2.1方法一:
ArrayList<String> list2 = new ArrayList<>(); list2.add("hello"); list2.add("bit"); list2.add("hehe"); System.out.println(list2);
2.2.2方法2:
for循环打印:
for(int i = 0;i<list2.size();i++){ System.out.print(list2.get(i)+" "); } System.out.println();
2.2.3方法3:
foreach打印:
for (String s:list2) { System.out.print(s+" "); } System.out.println();
2.2.4方法4:
迭代器打印(一):
Iterator<String> it = list2.iterator(); while (it.hasNext()){ //it指代第一个元素的前一个位置 System.out.print(it.next()+" "); } System.out.println();
迭代器打印(二):
//ListIterator的功能包括了 Iterator ListIterator<String> it2 = list2.listIterator(); while (it.hasNext()){ //it指代第一个元素的前一个位置 System.out.print(it.next()+" "); } System.out.println();
2.2.5利用remove删除List中的元素
2.2.6利用迭代器中add方法给List中添加元素
ArrayList<String> list2 = new ArrayList<>(); list2.add("hello"); list2.add("bit"); list2.add("hehe"); //实现了List接口的,一般都可以用ListIterator来打印 ListIterator<String> it2 = list2.listIterator(); while (it2.hasNext()){ String ret = it2.next(); if(ret.equals("hello")){ it2.add("hanghang");//此时的add后面的数据是在it2后面添加进去的 //list.add("hanghang");此时就会报错,抛出异常 }else { System.out.println(ret + " "); } } System.out.println(list2);
2.2.7ArrayList的简单实用方法
ArrayList的remove方法:
那么我们来思考一个问题:
为什么刚开始new ArrayList指定的大小是0,我们add元素的时候,仍然没有报错呢?
这个主要是因为ArrayList的源码中可以扩容,欲知具体原因,我们下一章节再讲。
上一篇:
92天倒计时,蓝桥杯省赛备赛攻略来啦~
下一篇:
2023蓝桥杯JavaB部分题解