ArrayList的使用

ArrayList的使用

  1. 增加数据
public class ArrayListTest {
    public static void main(String[] args) {
        //new两个ArrayList对象,只能存放String型数据
        ArrayList<String> arr1=new ArrayList<>();
        ArrayList<String> arr2=new ArrayList<>();
        //添加数据,包括单个参加和批量参加
        for (int i = 0; i < 10; i++) {
            /**
             *单个添加:add(String e)每次添加一个数据,在arr1中按插入顺序排列(相当于尾插)
             * 有个boolean型返回值,只返回true
             */
            arr1.add(i+"arr1");
        }
        /**
         * add(int index,String element)
         * 无返回值
         * index不能超过arr中已有元素的个数,否则会抛IndexOutOfBoundsException异常
         *因为底层是数组,存放数据不能有间隔,必须连续
         * 例如:这里arr集合中已有10个元素,最后一个元素的下标是9,那么index不能大于10
         * 此方法是指定下标插入数据
         * 例如:这里index=2,在下标2下添加"10arr",原来arr中从下标2开始后的元素全部向后移
         * 如果这里index=arr中元素的个数,那就相当于上面的add(String e)
         */
        arr1.add(2,"2arr1");//可以体现ArrayList元素可重复性,已有2arr1,还可以插入2arr1
        /**
         * addAll(Collection c)
         * 批量添加:传进去一个集合arr1,在原集合arr2的尾部插入arr1中的所有元素
         * 注意!:
         * 这里传进去的集合可以传Collection中的集合,不一定非得是ArrayList,但不能传Map
         * 这个方法有个boolean型返回值,返回的是传进去的集合中元素的个数是不是0,是0则返回false
         * 相当于没有插入数据(插入0个数据)
         */
        HashSet<String> arr3=new HashSet<>();
        arr3.add("arr3");
        System.out.println(arr2.addAll(arr3));
        /**
         * addAll(int index,Collection c)
         *从传入的index开始插入传入的Collection c中的元素,从index开始(包括index)后的元素依次向后移动
         * 对比add(int index,String element)和addAll(Collection c)去理解addAll(int index,Collection c)
         * 返回值与addAll(Collection c)类似
         */
        arr2.addAll(1,arr1);
		//通过构造函数实现批量添加
        ArrayList<String> arr4=new ArrayList<>(arr1);
    }
}

  1. 删除和更改数据
    此代码放在增加代码的末尾
//删除数据
        /**
         * remove(int index)删除index下标对应的元素,返回值为删除的那个元素
         * remove(Object o)在集合中找到传进去的数据并删除
         * 有多少删除多少,这里集合arr1中有两个2arr1,都删除掉
         * removeAll(Collection c)删除集合中与传入集合数据相同的数据
         * 这里删除集合arr2中与集合arr1中元素相同的元素
         * retainAll(Collection c)删除集合中与传入集合数据不同的数据(相当于求交集)
         * 这里删除集合arr2中与集合arr3中元素不同的元素
         */
        arr1.remove(3);
        arr1.remove("2arr1");
        arr2.removeAll(arr1);
        arr2.retainAll(arr3);
        
        //更改数据:先删除要更改的数据,再添加新数据
        //将集合arr1下标2的数据改为"2AAA"
        arr1.remove(2);
        arr1.add(2,"2AAA");
  1. 查询数据
//查询数据
        /**
         *get(int index)根据下标查询数据
         * 返回值是下标对应的数据
         * indexOf(Object o)
         * 返回集合arr1中第一个"ZAAA"的下标,没有则返回-1
         */
        System.out.println(arr1.get(0));
        System.out.println(arr1.indexOf("2AAA"));
        //遍历集合
        //for循环 size()获取集合元素个数
       System.out.println("for循环遍历集合arr2");
        for (int i = 0; i < arr2.size(); i++) {
            System.out.print(arr2.get(i)+" ");
        }
        System.out.println();
        //forEach: arr1.for
        System.out.println("forEach遍历集合arr1");
        for (String s : arr1) {
            System.out.print(s+" ");
        }
        System.out.println();
        //迭代器遍历集合
        /**
         * 先得到集合的迭代器Iterator iterator
         *Iterator中
         * hasNext()判断集合是否存在下一个元素
         * next()返回当前下标元素,下标下移
         * remove()删除当前下标的元素
         */
        System.out.println("迭代器遍历集合arr1");
        Iterator iterator=arr1.iterator();
        while(iterator.hasNext()){
            System.out.print(iterator.next()+" ");
            iterator.remove();
        }
        System.out.println();
        System.out.println("迭代器遍历集合arr1");
        while(iterator.hasNext()){
            System.out.print(iterator.next()+" ");//上一次遍历把元素全删除了
        }
        System.out.println();

将添加、删除和更改、查询三部分代码按顺序整合的运行结果
在这里插入图片描述

  1. 判断元素是否存在
boolean contains=arr2.contains("arr3");
        System.out.println(contains);//打印true
        System.out.println(arr1.containsAll(arr2));//arr1第一次迭代遍历remove后为空,打印false

在这里插入代码片

  1. ArrayList转换成数组
//转成数组
        /**
         * toArray()返回Object[]
         * toArray(T[])返回T[]
         */
     Object[] objects=arr4.toArray();
        System.out.println(Arrays.toString(objects));
        String[] str=new String[arr1.size()];
        arr1.toArray(str);
        System.out.println(Arrays.toString(str));
        //toString()将集合中元素拼接成数组打印形式的字符串
        System.out.println(arr4.toString());
        //直接打印集合名打印结果和toString()相同
        System.out.println(arr4);

在这里插入图片描述

  1. 求子集合
/**
         * 转成list型--->求子集合
         * subList(int formIndex,int toIndex)
         * 将原集合[formIndex,toIndex)区间转化成List
         */
        List<String> sublist=arr4.subList(3,6);//[3,6)
        System.out.println(sublist);

在这里插入图片描述
注意!!!以上所有代码按需求整合进main方法,就可以打印出相应结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值