Java数据结构__Arraylist与顺序表(1)

目录

  • 1. 线性表
  • 2. 顺序表
  • 3. ArrayList介绍
      • ArrayList构造
  • 4. ArrayList使用
      • 1.常见操作
      • 2.ArratList的遍历
      • 3.ArrayList的扩容机制


1. 线性表

线性表是一种数据结构,它由n(n≥0)个数据元素组成,数据元素类型相同,且呈现一对一的线性关系。
常见的线性表有: 顺序表 , 链表 , 栈 , 队列 …

2. 顺序表

顺序表是用一段地址连续的存储单元一次存储数据元素的线性结构 , 一般情况下采用数组元素存储
它的功能比数组强大 , 相当于数组的进阶

ArrayList可扩容 , 是一个动态类型的顺序表

3. ArrayList介绍

  1. ArrayList是以泛型⽅式实现的,使⽤时必须要先实例化
  2. ArrayList实现了RandomAccess接⼝,表明ArrayList⽀持随机访问
  3. ArrayList实现了Cloneable接⼝,表明ArrayList是可以clone的
  4. ArrayList实现了Serializable接⼝,表明ArrayList是⽀持序列化
  5. 和Vector不同,ArrayList不是线程安全的,在单线程下可以使⽤,在多线程中可以选择Vector或者
    CopyOnWriteArrayList

ArrayList构造

    public static void main(String[] args) {
        //   1.构造空的列表(常见写法)
        List<Integer> list1=new ArrayList<>();
        
        //   2.构造一个具有5个容量的列表
        List<Integer> list2=new ArrayList<>(5);
        list2.add(1);
        list2.add(2);
        list2.add(1,3);
        
        //   3.构造与list2元素一致的顺序表
        List<Integer> list3=new ArrayList<>(list2);
        
        //   4.没有类型的顺序表(避免使用, 容易出错)
        List list4=new ArrayList();
        list4.add("你好");
        list4.add(1);
    }

4. ArrayList使用

1.常见操作

  1. boolean add( E element)
    作用:尾插元素
  2. void add(int index,E element)
    作用:把元素插入到index位置
  3. boolean addAll(另一个顺序表)
    作用:尾插另一个顺序表的元素
  4. E remove(int index)
    作用:删除index位置的元素
  5. boolean remove(Object o)
    作用:删除遇到的第一个o
  6. E get(int index)
    作用:获取下标index位置元素
  7. E set(int index,E element)
    作用:将下标index位置元素设置为element
  8. void clear() 作用:清空所有元素
  9. int indexOf(Object o)
    作用:返回第一个o所在下标
  10. int lastIndexOf(Object o)
    作用:返回最后一个o的下标
  11. List < E > subList(int fromindex,int toIndex)
    作用:截取部分 list(左闭右开)

2.ArratList的遍历

ArrayList可以使用三种方式遍历:
1.for循环+下标
2.foreach
3.使用迭代器

补充:
List求长度用 list.size()
数组用 arr.length
字符串用s.length()

 List<Integer> list1=new ArrayList<>();
        list1.add(11);
        list1.add(12);
        list1.add(13);
        System.out.println(list1.size()); //执行结果:3
        
        //for循环
        for(int i=0;i<list1.size();i++){
            System.out.print(list1.get(i)+" "); //执行结果:11 12 13
        }

        System.out.println("\n");
 
        //foreach
        for(Integer i:list1){
            System.out.println(i);
        }
 
        //迭代器,要和集合类泛型参数一致,它也是一个泛型类
        Iterator<Integer> iterator= list1.iterator();
        while(iterator.hasNext()){
            //通过 next 获取到list1中的元素
            //通过 hasnext 判断是否遍历结束
            System.out.println(iterator.next());
        }

可以把迭代器iterator想象成 光标 ,表示数据到达了哪个位置

3.ArrayList的扩容机制

ArrayList是一个动态类型的顺序表 . 在插入元素的过程中会自动扩容
如果你初始设置一个顺序表容量为10,当你放入元素超过十个之后, 就会触发自动扩容机制 ,不必考虑放入的元素超过容量的问题

你可能感兴趣的:(Java基础知识,java,数据结构,算法)