List常见方法用法总结

Collection 接口虽然是集合中最大的接口,但是如果直接使用Collection进行操作,表意并不明确,因此现在Collection接口现在已经不提倡使用,在这总结一下List子接口下的ArrayList类常见用法。

先在此罗列一些List接口中常见常用的方法:

List常见方法用法总结
在这些方法中get()方法是Collection接口中没有出现的方法,因此使用get()方法可以很方便的遍历List集合中的每一个元素,这是Collection接口不具备的,遍历Collection集合中的元素则需要使用迭代器。

方法如何简单使用,观察例子:

package com.qty6.demo;

import java.util.ArrayList;
import java.util.List;

/*
 1. @author F3ver1
 2. @date 2018/10/30 9:20
 */
public class Demo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("红颜弹指老");
        list.add("刹那芳华");
        list.add("与其天涯思苦");
        list.add("恋恋不舍");
        list.add("莫若相忘于江湖");
        list.add("莫若相忘于江湖");
        //打印该集合
        System.out.println(list);
        System.out.println("-------------------");
        //判断长度和是否为空
        System.out.println("list集合长度:"+list.size()+",list集合是否为空:"+list.isEmpty());
        System.out.println("-------------------");
        //查找指定元素的索引
        System.out.println(list.indexOf("红颜弹指老"));
        System.out.println(list.indexOf("刹那芳华"));
        System.out.println(list.lastIndexOf("红颜弹指老"));
        System.out.println("-------------------");
        //删除指定索引的元素
        list.remove(0);
        System.out.println(list);
        System.out.println("-------------------");
        //改变指定索引的元素
        list.set(2,"恋恋难忘");
        System.out.println(list);
    }
}

结果打印:
[红颜弹指老, 刹那芳华, 与其天涯思苦, 恋恋不舍, 莫若相忘于江湖, 莫若相忘于江湖]
————————————————————
list集合长度:6,list集合是否为空:false
————————————————————
0
1
0
————————————————————
[刹那芳华, 与其天涯思苦, 恋恋不舍, 莫若相忘于江湖, 莫若相忘于江湖]
————————————————————
[刹那芳华, 与其天涯思苦, 恋恋难忘, 莫若相忘于江湖, 莫若相忘于江湖]




List是个接口,无法直接为其实例化,选择使用子类ArrayList为其实例化,可以通过以上的例子看出

  1. List集合可以存储重复的元素
  2. 元素是有序的,这里的顺序就是按照为集合添加元素时的顺序
  3. 是可以存储不同数据类型的元素的,由于我规定了String,就只存了String
  4. 相较于数组,长度是可以变化的
  5. 只能存储引用数据类型

在这里解释一下第五条

public class Demo6 {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add(100);//Integer i = 100;    Integer i = Integer.valueOf(100);
        list.add(200);
        System.out.println(list);
    }
}

这里100并不是基本数据类型,因为List只能存储引用数据类型,因此是包装类Integer自动装箱,以下语法自然是会报错的

Integer<int> list = new ArrayList<>();
再总结一下List集合存储对象并遍历元素:
package com.qty6.demo;

import java.util.*;

/*
 * @author F3ver1
 * @date 2018/10/29 17:09
 */
class Student {
    private String name;
    private int age;
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
}
class Test{
    public static void main(String[] args) {
        List<Student> List = new ArrayList<>();
        List.add(new Student("qty",20));
        List.add(new Student("qqq",21));
        List.add(new Student("aaa",22));
        Iterator<Student> iterator = List.iterator();
        //使用Collection接口中的迭代器遍历
        while (iterator.hasNext()){
             Student student = iterator.next();
            System.out.println("姓名:"+student.getName()+",年龄:"+student.getAge());
        }
        System.out.println("-----------------------");
        //使用for循环,size()方法与get()方法结合遍历
        for (int i = 0;i<List.size();i++){
            Student student = List.get(i);
            System.out.println("姓名:"+student.getName()+",年龄:"+student.getAge());
        }
        System.out.println("-----------------------");
        //使用List特有迭代器遍历
        ListIterator<Student> listIterator = List.listIterator();
        while (listIterator.hasNext()){
            Student student = listIterator.next();
            System.out.println("姓名:"+student.getName()+",年龄:"+student.getAge());
        }
    }
}

结果打印:
姓名:qty,年龄:20
姓名:qqq,年龄:21
姓名:aaa,年龄:22
————————————————
姓名:qty,年龄:20
姓名:qqq,年龄:21
姓名:aaa,年龄:22
————————————————
姓名:qty,年龄:20
姓名:qqq,年龄:21
姓名:aaa,年龄:22

这里推荐使用for循环遍历集合元素,简单容易使用