栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ArrayList的使用和源码分析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ArrayList的使用和源码分析

目录

1.基本数据类型和包装类

2.List的使用

2.1尾插e

 2.2打印List

2.2.1方法一:

2.2.2方法2:

2.2.3方法3:

2.2.4方法4:

2.2.5利用remove删除List中的元素

2.2.6利用迭代器中add方法给List中添加元素 

 2.2.7ArrayList的简单实用方法


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 list = new ArrayList<>(10);

        ArrayList list2 = new ArrayList<>();
        list2.add("hello");
        list2.add("bit");
        list2.add("hehe");
        System.out.println(list2);
        //使用另外一个Arraylist对list3初始化,前后必须保持一样的类型
        ArrayList list3 = new ArrayList<>(list2);
        list3.add("hanghang");
        System.out.println(list3);
    }

 2.2打印List

2.2.1方法一:
 ArrayList 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 

2.2.3方法3:

foreach打印:

for (String s:list2) {
            System.out.print(s+" ");
        }
        System.out.println();

2.2.4方法4:

迭代器打印(一):

 Iterator it = list2.iterator();
        while (it.hasNext()){
            //it指代第一个元素的前一个位置
            System.out.print(it.next()+" ");
        }
        System.out.println();

迭代器打印(二):

 //ListIterator的功能包括了 Iterator
        ListIterator 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 list2 = new ArrayList<>();
        list2.add("hello");
        list2.add("bit");
        list2.add("hehe");
    //实现了List接口的,一般都可以用ListIterator来打印
        ListIterator 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的源码中可以扩容,欲知具体原因,我们下一章节再讲。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/683607.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号