java List集合,ArrayList类用法详解

KLQ 2020-08-25 11:21:23 java常见问答 8379

下面要给大家介绍的就是Java List集合方面的知识,主要讲到的是ArrayList类用法详的内容,下面就一起来了解一下吧,有具体的代码示例哦。

List是一个有序、可重复的集合,集合当中,每个元素都有其对应的顺序索引,List集合允许使用重复元素,能够通过索引来访问指定位置的集合元素,List集合默认按元素的添加顺序设置元素的索引,第一个添加到 List 集合中的元素的索引为0,第二个为1,以此类推。

List实现了Collection接口,它主要有两个常用的实现类:ArrayList类和LinkedList类

下面详细的讲一下ArrayList类。

ArrayList类

ArrayList类实现了可变数组的大小,存储在内的数据称为元素,它还提供了快速基于索引访问元素的方式,对尾部成员的增加和删除支持较好,使用ArrayList创建的集合,允许对集合中的元素进行快速的随机访问,但是,向ArrayList当中插入和删除元素的速度会比较的慢。

ArrayList类的常用构造方法的重载形式:

ArrayList()---构造一个初始容量为10的空列表;

ArrayList(Collectionc)---构造一个包含指定Collection元素的列表,这些元素是按照该Collection的迭代器返回它们的顺序排列的;

ArrayList类除了包含Collection接口中的所有方法之外,还包括List接口中提供的如下所示的方法。

ArrayList类的常用方法:

ArrayList类的常用方法

这里的话要注意了,在调用List的set(int index, Object element)方法来改变List集合指定索引处的元素的时候,指定的索引一定要是List集合的有效索引,例,集合长度为4,就不可以指定替换索引为4处的元素,也就是说这个方法不会改变List集合的长度。

示例:

使用ArrayList类向集合中添加三个商品信息,包括商品编号、名称和价格,之后,遍历集合输出这些商品信息。

创建一个商品类Product,在这个类中定义3个属性和toString()方法,分别实现setter/getter方法。

代码实现:

public class Product
{
    // 商品类
    private int id; // 商品编号
    private String name; // 名称
    private float price; // 价格
    public Product(int id, String name, float price)
    {
        this.name = name;
        this.id = id;
        this.price = price;
    }
    // 这里是上面3个属性的setter/getter方法,这里省略
    public String toString()
    {
        return "商品编号:" + id + ",名称:" + name + ",价格:" + price;
    }
}

创建一个测试类,调用Product类的构造函数实例化三个对象,将Product对象保存至ArrayList集合中,最后遍历该集合,输出商品信息。

测试类的代码实现:

public class Test
{
    public static void main(String[] args)
    {
        Product pd1 = new Product(4, "木糖醇", 10);
        Product pd2 = new Product(5, "洗发水", 12);
        Product pd3 = new Product(3, "热水壶", 49);
        List list = new ArrayList(); // 创建集合
        list.add(pd1);
        list.add(pd2);
        list.add(pd3);
        System.out.println("*************** 商品信息 ***************");
        for (int i = 0; i < list.size(); i++)
        {
            // 循环遍历集合,输出集合元素
            Product product = (Product) list.get(i);
            System.out.println(product);
        }
    }
}

这个示例当中的ArrayList集合中存放的是自定义类Product的对象,这和存储的String类的对象是相同的,和Set不同的是,List集合中存在get()方法,这个方法能够通过索引来获取所对应的值,获取的值为Object类,所以要将这个值转换成Product 类,从而获取商品信息。

程序运行结果:

*************** 商品信息 ***************
商品编号:4,名称:木糖醇,价格:10.0
商品编号:5,名称:洗发水,价格:12.0
商品编号:3,名称:热水壶,价格:49.0

示例:

在使用List集合的时候,要注意区分indexOf()方法和lastIndexOf()方法,前者是获得指定对象的最小索引位置,后者是获得指定对象的最大索引位置,前提条件是指定的对象在List集合中有重复的对象,否则这两个方法获取的索引值相同。

下面的代码演示了indexOf()方法和lastIndexOf()方法的区别:

public static void main(String[] args)
{
    List list = new ArrayList();
    list.add("One");
    list.add("|");
    list.add("Two");
    list.add("|");
    list.add("Three");
    list.add("|");
    list.add("Four");
    System.out.println("list 集合中的元素数量:" + list.size());
    System.out.println("list 集合中的元素如下:");
    Iterator it = list.iterator();
    while (it.hasNext())
    {
        System.out.print(it.next() + "、");
    }
    System.out.println("\n在 list 集合中'丨'第一次出现的位置是:" + list.indexOf("|"));
    System.out.println("在 list 集合中'丨'最后一次出现的位置是:" + list.lastIndexOf("|"));
}

上面的代码创建了一个List集合list,之后,添加了7个元素,因为索引从0开始,所以最后一个元素的索引为6。

输出结果:

list 集合中的元素数量:7
list 集合中的元素如下:
One、|、Two、|、Three、|、Four、
在 list 集合中'|'第一次出现的位置是:1
在 list 集合中'|'最后一次出现的位置是:5

示例:使用subList()方法截取List集合中部分元素的时候要注意,新的集合中包含起始索引位置的元素,可是不包含结束索引位置的元素,例,subList(1,4)方法实际截取的是索引1到索引3的元素,并组成新的List集合。

下面的代码演示了subList()方法的具体用法:

public static void main(String[] args)
{
    List list = new ArrayList();
    list.add("One");
    list.add("Two");
    list.add("Three");
    list.add("Four");
    list.add("Five");
    list.add("Six");
    list.add("Seven");
    System.out.println("list 集合中的元素数量:" + list.size());
    System.out.println("list 集合中的元素如下:");
    Iterator it = list.iterator();
    while (it.hasNext())
    {
        System.out.print(it.next() + "、");
    }
    List sublist = new ArrayList();
    sublist = list.subList(2, 5); // 从list集合中截取索引2~5的元素,保存到sublist集合中
    System.out.println("\nsublist 集合中元素数量:" + sublist.size());
    System.out.println("sublist 集合中的元素如下:");
    it = sublist.iterator();
    while (it.hasNext())
    {
        System.out.print(it.next() + "、");
    }
}

输出结果:

list 集合中的元素数量:7
list 集合中的元素如下:
One、Two、Three、Four、Five、Six、Seven、
sublist 集合中元素数量:3
sublist 集合中的元素如下:
Three、Four、Five、

关于Java List集合ArrayList类用法你都了解了吗?更多和Java List集合等方面相关的java基础知识,请继续通过奇Q工具网来进行学习吧!

推荐阅读:

java list,java中List的用法和实例详解

java List和Set的区别是什么?有什么区别?

java动态数组arraylist该如何使用?什么是arraylist?