集合-List-new ArrayList

一、List集合存储元素特点:

  • 有序可重复; 有序:List集合中的元素有下标,从0开始,以1递增。可重复:存储一个1,还可以再存储1.

二、List集合常用方法:

  • 1、List是Collection接口的子接口,肯定List接口有自己“特色”的方法:
  • List接口特有的常用的方法:
  • void add(int index, Object element)        在集合末尾添加元素
  • Object set(int index, Object element)      修改指定位置的元素
  • Object get(int index)      获取指定位置元素
  • int indexOf(Object o)     获取指定对象第一次出现的位置 
  • int lastIndexOf(Object o) 获取指定对象最后一次出现的位置
  • Object remove(int index) 删除指定下标元素

三、ArrayList  集合:

  • 1、默认初始化容量10(底层先创建了一个长度为0的数组,当添加第一个元素的时候,初始化容量10。)
  • 2、集合底层是一个Object[]数组。ArrayList集合是非线程安全的。
  • 3、构造方法:默认初始化容量new ArrayList();  初始化容量指定一个值:new ArrayList(20);
  • 4、ArrayList集合的扩容:增长到原容量的1.5倍。
  • 5、数组优点: 检索效率比较高。(每个元素占用空间大小相同,内存地址是连续的,元素又有下标,通过数学表达式计算出元素的内存地址,所以检索效率最高。)
  • 6、数组缺点:机增删元素效率比较低;另外数组无法存储大数据量。(很难找到一块非常巨大的连续的内存空间。)
  • 7、向数组末尾添加元素,效率很高,不受影响。
  • 8、这么多的集合中,用哪个集合最多?ArrayList集合使用最多,因为往数组末尾添加元素,效率不受影响。另外,我们检索/查找某个元素的操作比较多。
  • 9、ArrayList集合底层是数组优化:尽可能少的扩容。因为数组扩容效率比较低,在使用ArrayList集合 的时候预估计元素的个数,给定一个初始化容量。

List 集合 接口方法测试:

public class ListTest01 {
    public static void main(String[] args) {
        // 创建List类型的集合。
        List myList = new ArrayList();

        // 添加元素
        myList.add("A"); // 默认都是向集合末尾添加元素。
        myList.add("B");//在列表的指定位置插入指定元素(第一个参数是下标)
        // 这个方法使用不多,因为对于ArrayList集合来说效率比较低。
        myList.add(1, "KING");// 根据下标获取元素
        Object firstObj = myList.get(0);
        System.out.println(firstObj);

        // 因为有下标,所以List集合有自己比较特殊的遍历方式
        // 通过下标遍历。【List集合特有的方式,Set没有。】
        for(int i = 0; i < myList.size(); i++){
            Object obj = myList.get(i);
            System.out.println(obj);
        }

        // 获取指定对象第一次出现处的索引。
        System.out.println(myList.indexOf("C")); // 3

        // 获取指定对象最后一次出现处的索引。
        System.out.println(myList.lastIndexOf("C")); // 4

        // 删除指定下标位置的元素
        // 删除下标为0的元素
        myList.remove(0);
        System.out.println(myList.size()); // 5

// 修改指定位置的元素 myList.set(2, "Soft");
// 遍历集合 for(int i = 0; i < myList.size(); i++){ Object obj = myList.get(i); System.out.println(obj); } } }

new ArrayList :集合方法:

size();  获取当前集合元素个数;并不是集合的容量

ArrayList(Collection<?extends E> c) 里面可以构造一个集合

/*
集合ArrayList的构造方法
 */
public class ArrayListTest02 {
    public static void main(String[] args) {

        // 默认初始化容量10
        List myList1 = new ArrayList();
// 集合的size()方法是获取当前集合中元素的个数。不是获取集合的容量。
        System.out.println(list1.size()); // 0
// 创建一个HashSet集合 Collection c = new HashSet(); // 添加元素到Set集合 c.add(100); c.add(200); // 通过这个构造方法就可以将HashSet集合转换成List集合。 List myList3 = new ArrayList(c); for(int i = 0; i < myList3.size(); i++){ System.out.println(myList3.get(i)); } } }

 

posted @ 2022-04-25 15:06  280887072  阅读(1204)  评论(0编辑  收藏  举报