List的方法以及ArrayList的扩容机制

package com.hqyj.api.collections;

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

/**
 * List: 有序(自然顺序)有重复的集合
 *        添加的先后顺序
 *        可以存储两个或多个相同的元素
 *
 * 4个实现类:
 * ArrayList:底层封装了一个Object[],elementData,线程不安全
 * LinkedList:底层是一个链表,(Node)
 * Vector:底层也是数组,线程安全,效率低
 * Stack:底层也是数组,不过遵循先进后出的原则
 *
 *
 * ArrayList的扩容机制:
 *   1.当添加第一个元素时,会执行grow方法,给Object[]给默认容量  是10
 *   2.当添加后续元素<10时,不会进行扩容
 *   3.当添加元素超过10时会执行grow方法,进行扩容,扩容机制1.5倍,15,20
 *
 */
public class TestList {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(1);
        list.add(2);
        list.add(2);
        list.add(3);
        System.out.println(list);
        System.out.println("=====");

        //2。add(int index, E element)
        list.add(2,5);//在下标为2的位置添加元素5
        System.out.println(list);


        //3.addAll(Collection<? extends E> c)
        System.out.println("==addAll()==");
        List<Integer> list2 = new ArrayList<>();
        list2.add(8);
        list2.add(9);
        list2.addAll(list);
        System.out.println(list2);

        //4.clear()
        System.out.println("==clear()==");
        System.out.println("清空前的list2:"+list2);
        list2.clear();
        System.out.println("清空后的list2:"+list2);

        //5.contains(Object o)
        System.out.println("==contains()==");
        System.out.println("list:"+list);
        System.out.println("list中是否包含8:"+list.contains(8));
        System.out.println("list中是否包含5:"+list.contains(5));

        //6.containsAll(Collection<?> c)
        System.out.println("==containsAll()==");
        List<Integer> list3 = new ArrayList<>();
        list3.add(3);
        list3.add(1);
        System.out.println("list3:"+list3);
        System.out.println("list中是否包含list3中所有元素:"+list.containsAll(list3));

        //7.equals(Object o)
        System.out.println("==equals()==");
        List<Integer> list4 = new ArrayList<>();
        list4.add(3);
        list4.add(1);
        System.out.println("list4中的元素:" + list4);
        System.out.println("list4中的元素和list3中的元素是否相等:"+list4.equals(list3));

        //8.get(int index)
        System.out.println("==get()==");
        System.out.println("list中下标为2的元素:"+list.get(2));

        //9.haseCode()
        System.out.println("==hashCode()==");
        System.out.println("list的哈希码值:"+list.hashCode());

        //10.indexOf(Object o)
        System.out.println("==indexOf(Object o) ==");
        System.out.println("list:"+list);
        System.out.println("list中元素2第一次出现的下标:"+list.indexOf(2));

        //11.remove(int index)
        System.out.println("==remove(int index) ==");
        System.out.println("list3:" + list3);
        System.out.println("移除list3中下标为1的元素");
        list3.remove(1);
        System.out.println("移除后list3" + list3);

        //12.removeAll(Collection<?> c)
        System.out.println("==removeAll(Collection<?> c) ==");
        System.out.println("list4:"+list4);
        System.out.println("list:"+list);
        list.removeAll(list4);
        System.out.println("把list中所有list4包含的元素移除后:"+list);

        //13.retainAll(Collection<?> c)
        System.out.println("==retainAll(Collection<?> c) ==");
        List<Integer> list5 = new ArrayList<>();
        list5.add(2);
        System.out.println("list5:"+list5);
        System.out.println("list:"+list);
        list.retainAll(list5);
        System.out.println("list中只保留list5中的元素");
        System.out.println("list:"+list);

        //14.set()
        System.out.println("==set()==");
        List<Integer> list6 = new ArrayList<>();
        list6.add(1);
        list6.add(3);
        list6.add(3);
        list6.add(4);
        list6.add(5);
        System.out.println("list6:"+list6);
        list6.set(1,2);
        System.out.println("把下标为1的元素换成2");
        System.out.println("list6:"+list6);

        //15.size()
        System.out.println("==size()==");
        System.out.println("list6的长度:"+list6.size());

        //16.subList()
        System.out.println("==subList()==");
        System.out.println("截取list6中下标1到4(不包括4)的元素");
        List<Integer> list7 = list6.subList(1,4);
        System.out.println(list7);

        //17.toArray()
        System.out.println("==toArray()==");
        Object[] ob =list6.toArray();
        System.out.println(Arrays.toString(ob));

         //18.toArray(T[] a)
        System.out.println("==toArray(T[] a)==");
        Integer []  it = list6.toArray(new Integer[list6.size()]);
        System.out.println(Arrays.toString(it));


    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值