Java教程

Java集合框架——ArrayList

本文主要是介绍Java集合框架——ArrayList,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

集合

一:集合概念

对象的容器,定义了对多个对象的进行操作的常用方法,可实现类似于数组的功能。

二:集合和数组的区别

  • 数组的长度是固定的,集合的长度是可变化的
  • 数组可以存储基本数据类型和引用数据类型,而集合只能存储引用数据类型(即对象)

在这里插入图片描述

Colection父接口

  • 方法
    • boolean add(Object obj) // 添加一个对象
    • booleadn addAll(Collection c) // 将一个集合中所有对象添加到此集合中
    • void clear() // 清空集合中的所有元素
    • boolean contains(Object o) // 检查此集合中是否包含o对象
    • boolean isEmpty() // 判断此集合是否为空
    • boolean remove(Object o) // 从此集合中移除o对象,存在的话删除对象o的单个实例
    • int size() // 返回此集合中元素的个数

一:集合中存储的实际上是对象的地址,clear()方法是将集合中对象的地址删除,对象本身是不会被删除的。

二:API中对于remove()方法的介绍如下:

从该集合中删除指定元素的单个实例(如果存在)(可选操作)。 更正式地,删除元素e ,使得**(o==null ? e==null : o.equals(e))**

注意,不同类的equals方法是不同的,基类Object中定义的equals方法是比较两个对象的地址值是否相等,根据不同类的不同功能,我们可以选择重写equals方法。在使用集合的remove()方法时,需要注意集合所包含对象的equals方法的含义。

代码示例:

/*
 * Collection接口的使用说明
 * (1) 添加元素
 * (2) 删除元素
 * (3) 遍历元素
 * (4) 判断
 */
public class Demo1 {

    public static void main(String[] args) {
        Collection<Integer> collection = new ArrayList<Integer>();
        // 添加元素
        collection.add(1);
        collection.add(1);
        collection.add(2);
        collection.add(3);
        // System.out.println会自动调用对象的toString()方法,前提是方法存在

        System.out.println(collection);
        // 移除元素
        collection.remove(1);
        System.out.println(collection);
        // 包含元素
        System.out.println(collection.contains(1));

        // 遍历元素
        // 1. foreach方法
        for(Integer num : collection){
            System.out.println(num);
        }

        System.out.println("===================");
        // 2.迭代器
        Iterator<Integer> iterator = collection.iterator();
        while(iterator.hasNext()){
            // next()方法会返回当前元素,并将迭代器指向移动到下一个位置
            Integer num = iterator.next();
            // remove()方法跟在next()方法后面使用,删除集合中next返回的元素
            iterator.remove();
            System.out.println(num);
        }
        System.out.println(collection.isEmpty());
    }
}

List子接口

一:特定:有序,有下标,元素可重复

  • 方法
    • void add(int index, Object o) // 在index处插入对象o
    • booleadn addAll(int index, Collection c) // 将一个集合中所有对象添加到此集合中的index位置
    • Object get(int index) // 返回集合中指定位置处的元素
    • List subList(int fromIndex, int toIndex) // 返回fromIndex和toIndex之间的集合元素

1.ArrayList

ArrayList类是Java集合框架中使用率很高的的一个类,它实现了List接口,底层是采用数组来保存元素,我们可以把它看作是一个可以自动增大容量的数组。

在ArrayList中有一个数组和计数器,当我们向ArrayList中添加一个元素时,这个元素会放在计算器所指定的数组索引位置上。当ArrayList对象的数组无法保存更多的元素时,它会创建一个比当前数组大一些的新数组,然后把当前数组的内容复制到新数组中。

在程序编写的过程中,我们最好根据需要保存元素的多少为ArrayList估算一个容量值,这样可以有效地避免操作过程中频繁地发生数组复制。

对于数据的访问一般包括四个操作:增,删,改,查。ArrayList对于这四个操作都给出了相应的方法。

1.1 增

  • public boolean add(E e)
    
  • public void add(int index, E element)
    
  • public boolean addAll(Collection<? extends E> c)
    
  • public boolean addAll(int index, Collection<? extends E> c)
    

其中,add方法用于添加单个元素,addAll方法用于添加一组元素。不带索引的add和addAll方法将元素添加于末尾,而带index的方法将元素在指定的index处插入列表。

例如:

 		ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.addAll(0, Arrays.asList(1,3,1,4));
        System.out.println(list);

输出结果:

[1, 3, 1, 4, 1, 2]

1.2 删

  • public E remove(int index)    // 删除指定索引处的元素
    
  • // 从列表中删除指定元素的第一个匹配项(如果存在)。如果列表中不包含改元素,则列表保持不变
    public boolean remove(Object o)
    
  • // Java8在Collection接口中新增的默认方法,ArrayList重写了该方法,从列表中删除满足filter的元素
    public boolean removeIf(Predicate<? super E> filter)
    
  • // 从列表中删除指定集合中包含的所有元素,它和remove方法不一样,比如说c中有一个元素为a,那么
    // removeAll方法会将列表中所有的元素a都删掉
    public boolean removeAll(Collection<?> c)
    

实例:

        ArrayList<Integer> list = new ArrayList<>();

        list.add(1);
        list.add(2);
        list.addAll(0, Arrays.asList(1,3,1,4));
        // System.out.println(list);

        list.remove(0);
        list.removeAll(Arrays.asList(3,1));
		// lambda表达式
        list.removeIf(x -> x % 2 == 0);

        System.out.println(list);

输出为一个空列表

1.3 改

  • public E set(int index, E element)
    

用给定元素element代替原列表中指定索引位置的元素

1.4 查

  • public E get(int index)    // 返回指定索引位置的元素
    
  • // 返回列表中元素o第一次出现的索引位置,如果列表中不包含该元素,则返回-1
    public int indexOf(Object o)
    
  • // 返回列表中元素o最后一次出现的索引位置,如果列表中不包含该元素,则返回-1
    public int lastIndexOf(Object o)
    
  • // 返回列表中fromIndex(包括)和toIndex(不包括)之间的元素
    public List<E> subList(int fromIndex, int toIndex)
    
这篇关于Java集合框架——ArrayList的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!