黑马程序员技术交流社区

标题: ArrayList用法详解 [打印本页]

作者: Hello、Bird    时间: 2019-1-14 19:52
标题: ArrayList用法详解

前两天学习到了ArrayList,那么在此写一篇帖子用来记述

1.什么是ArrayList
ArrayList就是传说中的动态数组,就是Array的复杂版本,用它主要有以下的好处:

我们都用过数组,知道数组的长度是静态的,也就是一旦定义好,就无法更改,那么就会有一些局限性。
ArrayList恰好解决了这一问题。在我们知道有多少数据元素时候,可以用数组,如果不知道元素的具体数量
那么久可以使用ArrayList了
2.Array的创建

举例来说,如果你要创建一个空的数组链表,用来存放String类型的对象,那么你可以像下面这样做:


  ArrayList<String> list = new ArrayList<String>();
注意:ArrayList类只支持对象类型,不支持 基础数据类型。就是说ArrayList对象只能存放对象,不能存放基础数据类型的数据。
ArrayList<String> list = new ArrayList<String>(){};  
          list .add("str01");
          list .add("str02");
3.Array的常用方法

          添加:add();
        删除:remove(int index);
        获取某一元素:get(int index);
         判断是否为空:isEmpty();


         获取list长度:size();
4.Array的常用方法
[Java] 纯文本查看 复制代码
import java.util.*;

public class ArrayListExamples {

    public static void main(String args[]) {
        // 创建一个空的数组链表对象list,list用来存放String类型的数据
        ArrayList<String> list = new ArrayList<String>();

        // 增加元素到list对象中
        list.add("Item1");
        list.add("Item2");
        list.add(2, "Item3"); // 此条语句将会把“Item3”字符串增加到list的第3个位置。
        list.add("Item4");

        // 显示数组链表中的内容
        System.out.println("The arraylist contains the following elements: "
                + list);

        // 检查元素的位置
        int pos = list.indexOf("Item2");
        System.out.println("The index of Item2 is: " + pos);

        // 检查数组链表是否为空
        boolean check = list.isEmpty();
        System.out.println("Checking if the arraylist is empty: " + check);

        // 获取链表的大小
        int size = list.size();
        System.out.println("The size of the list is: " + size);

        // 检查数组链表中是否包含某元素
        boolean element = list.contains("Item5");
        System.out
                .println("Checking if the arraylist contains the object Item5: "
                        + element);

        // 获取指定位置上的元素
        String item = list.get(0);
        System.out.println("The item is the index 0 is: " + item);

        // 遍历arraylist中的元素

        // 第1种方法: 循环使用元素的索引和链表的大小
        System.out
                .println("Retrieving items with loop using index and size list");
        for (int i = 0; i < list.size(); i++) {
            System.out.println("Index: " + i + " - Item: " + list.get(i));
        }

        // 第2种方法:使用foreach循环
        System.out.println("Retrieving items using foreach loop");
        for (String str : list) {
            System.out.println("Item is: " + str);
        }

        // 第三种方法:使用迭代器
        // hasNext(): 返回true表示链表链表中还有元素
        // next(): 返回下一个元素
        System.out.println("Retrieving items using iterator");
        for (Iterator<String> it = list.iterator(); it.hasNext();) {
            System.out.println("Item is: " + it.next());
        }

        // 替换元素
        list.set(1, "NewItem");
        System.out.println("The arraylist after the replacement is: " + list);

        // 移除元素
        // 移除第0个位置上的元素
        list.remove(0);

        // 移除第一次找到的 "Item3"元素
        list.remove("Item3");

        System.out.println("The final contents of the arraylist are: " + list);

        // 转换 ArrayList 为 Array
        String[] simpleArray = list.toArray(new String[list.size()]);
        System.out.println("The array created after the conversion of our arraylist is: "
                        + Arrays.toString(simpleArray));
    }
}
5.注意事项
若使用for循环遍历ArrayList,推荐倒序的方式遍历,由于ArrayList的长度是动态的,
那么如果在使用for正向遍历时删除某一元素,那么ArrayList会将剩余元素重新组合新的
ArrayList,这样就导致遍历时会少遍历一些数据,所以建议倒序遍历



作者: 柠檬leung不酸    时间: 2019-4-6 10:00
棒~加油哦




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2