MEC@JavaSE@基础篇@笔记14@进阶工具类——ArrayList和LinkedList

ArrayList和LinkedList

1、Arraylist使用示例:

package com.mec.study;

import java.util.ArrayList;

public class AboutArrayList {

    public static void main(String[] args) {
        //初始化ArrayList对象array
        ArrayList<Integer> array = new ArrayList<>();
        //增加一个int数值10
        array.add(10);
        //增加一个int数值20
        array.add(20);
        //取得下标为1的第二个数值
        int num = array.get(1);
        System.out.println(num);
    }

}

首先看到ArrayList是泛型类,可以任意指定类型的数据。

ArrayList的最大好处就是动态,可以不必关心数组空间的大小。

2、ArrayList遍历代码示例:

package com.mec.study;

import java.util.ArrayList;

public class AboutArrayList {

    public static void main(String[] args) {
        int[] a = {1,2,3,4,5};
        ArrayList<Integer> arr = new ArrayList<>();
        for (int i = 0; i < a.length; i++) {
            arr.add(a[i]);
        }

        for (int num : arr) {
            System.out.println(num);
        }
    }

}

上面的代码中:

for (int num : arr)的语法可以这样理解:

“:”前的元素,元素的类型必须与ArrayList的泛型一致(不要忘了自动装箱和拆箱,基本数据类型例如int和它的封装类例如Integer之间可以直接转换);这个元素就是后面数组或List中的每一个元素,而且是按照下标顺序从前往后取得的。

3、使用LinkedList的代码几乎与ArrayList一致,但也要留心二者差别:

ArrayList内部使用的是“动态数组”。

LinkedList内部使用的是“链表”。

根据这两点不同,我们可以根据实际使用情况进行更优的选择:

程序中基本没有数据的插入和删除,主要是查找的话,那么,ArrayList的效率更好;反之,LinkedList的效率更好。

除此之外,二者的功能基本相似。

4、泛型体现的好处

ArrayList和LinkedList类都是泛型类,这使得这两个“容器”真的是“大肚能容”,可以方便的存储任何类型数据。

package com.mec.study;

import java.util.LinkedList;

public class AboutArrayList {

    public static void main(String[] args) {
        LinkedList<Complex> complelist = new LinkedList<>();
        complelist.add(new Complex(1,2));
        complelist.add(new Complex());
        complelist.add(new Complex(1));
        complelist.add(new Complex(3,4));
        complelist.add(new Complex(1,1));

        for (Complex complex : complelist) {
            System.out.println(complex);
        }

    }

}

——————————————————————————————————————————————————————————————————————————————————
complex{a=1, b=2}
complex{a=0, b=0}
complex{a=1, b=0}
complex{a=3, b=4}
complex{a=1, b=1}

5、元素定位的方法

对象名.indexOf();

        Complex c = new Complex(3,4);
        int index = complelist.indexOf(c);
        System.out.println(index);

————————————————————————————————————————————————————————————————————————————————————————
3

输出结果为3,是List中下标为3 的第4个元素。

注意:无论我们是否在Complex类中是否覆盖equals()方法,indexOf()方法都会自动调用equals()方法进行“相等”判断。

但是,在没有覆盖equals()方法的时候,调用的是Object类原始的equals()方法,其比较的是对象的直接值(即 地址值)

5、判断元素存在的方法

对象名.contains();返回值为boolean类型。

package com.mec.study;

import java.util.LinkedList;

public class AboutArrayList {

    public static void main(String[] args) {
        LinkedList<Complex> complelist = new LinkedList<>();
        complelist.add(new Complex(1,2));
        complelist.add(new Complex());
        complelist.add(new Complex(1));
        complelist.add(new Complex(3,4));
        complelist.add(new Complex(1,1));

        Complex c = new Complex(3,4);
        System.out.println(complelist.contains(c));
        System.out.println(complelist.contains(new Complex(2,5)));
    }

}

————————————————————————————————————————————————————————————————————————————————
true
false

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值