zoukankan      html  css  js  c++  java
  • Java基础(6) | ArrayList

    # 什么是ArrayList?

    ArrayList是一个数组队列,相当于 动态数组。底层采用数组实现。

    # 注意事项

    泛型只能是引用类型,不能是基本类型
    如果希望向集合arraylist中存储基本类型,必须使用基本类型对应的包装类
    ArrayList中的操作不是线程安全的!所以,建议在单线程中才使用ArrayList,而在多线程中可以选择Vector或者CopyOnWriteArrayList。

    # 简单使用

    package com.leerep.javabase.arraylist;
    
    import java.util.ArrayList;
    
    public class FirstBlood {
        public static void main(String[] args) {
            ArrayList<String> list = new ArrayList<>();
            System.out.println(list);
            list.add("a");
            list.add("b");
            System.out.println(list);
        }
    }
    

    # 数组 VS ArrayList

    package com.leerep.javabase.arraylist;
    /*
    * 注意事项:
    * 数组一旦创建在程序运行期间不可变
    * ArrayList的长度可以随时改变
    * */
    import java.util.ArrayList;
    
    public class ArrayVSArrayList {
        public static void main(String[] args) {
            Actor[] actors = new Actor[3];
            actors[0] = new Actor("迪丽热巴", 20);
            actors[1] = new Actor("古力娜扎", 20);
            actors[2] = new Actor("玛尔扎哈", 20);
    
            System.out.println(actors);     //得到的是地址
    
            for (int i = 0; i < actors.length; i++) {
                System.out.println(actors[i]);      //重写toString方法后,打印对象的具体信息,不重写仍是地址值
            }
    
            ArrayList<Actor> al = new ArrayList<>();
            for (int i = 0; i < actors.length; i++) {
                al.add(actors[i]);
            }
            System.out.println(al);     //重写toString方法后,打印对象的具体信息,不重写数组里仍是地址值
        }
    }
    

    # 常用方法

    package com.leerep.javabase.arraylist;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    
    public class ArrayListCommonMethod {
        public static void main(String[] args) {
            ArrayList<String> arrayList = new ArrayList<>();
            arrayList.add("l");
            arrayList.add("e");     //add()函数返回值为true或者false    ArrayList集合添加动作一定成功,其他集合不一定。
            arrayList.add("e");
            arrayList.add("e");
            arrayList.add("r");
            arrayList.add("e");
            arrayList.add("p");
            System.out.println(arrayList);
    
            //从集合中获取元素,参数是索引
            String s = arrayList.get(0);
            System.out.println("集合的第一个元素是:" + s);
    
            //获取集合长度
            int l = arrayList.size();
            System.out.println("集合的长度是:" + l);
    
            //从集合中删除元素,参数是索引
            String deleteValue = arrayList.remove(3);
            System.out.println("删除集合的第四个元素:" + deleteValue);
            System.out.println(arrayList);
    
            //集合遍历
            for (int i = 0; i < arrayList.size(); i++) {
                System.out.print(arrayList.get(i) + "	");
            }
            System.out.println();
            for (String temp :
                    arrayList) {
                System.out.print(temp + "	");
            }
            System.out.println();
            for (Iterator iter = arrayList.iterator(); iter.hasNext(); ) {
                System.out.println("next is: " + iter.next());
            }
    
            //判断集合是否为空
            if(arrayList.isEmpty())
                System.out.println("集合为空");
            else
                System.out.println("集合非空");
    
            //克隆集合      浅拷贝
            ArrayList<String> al = (ArrayList<String>) arrayList.clone();
            System.out.println(al);
    
            //清空集合
            arrayList.clear();
            System.out.println(arrayList);
        }
    }
    

    # 存储普通类型

    package com.leerep.javabase.arraylist;
    /*
    * 基本类型与包装类对应关系
    * byte --> Byte
    * short --> Short
    * int --> Integer
    * long --> Long
    * char --> Character
    * float --> Float
    * double --> Double
    * boolean --> Boolean
    * */
    import java.util.ArrayList;
    
    public class ArrayListSaveBasicType {
        public static void main(String[] args) {
            ArrayList<Integer> alI = new ArrayList<>();
            alI.add(100);       //自动装箱      基本类型 --> 引用类型
            alI.add(200);
            System.out.println(alI);
    
            int a = alI.get(0);     //自动拆箱      引用类型 --> 基本类型
            System.out.println(a);
    
            System.out.println("=============================");
    
            ArrayList<Character> alC = new ArrayList<>();
            alC.add('a');
            alC.add('b');
            alC.add('c');
            System.out.println(alC);
    
            System.out.println("=============================");
    
            ArrayList<Double> alD = new ArrayList<>();
            alD.add(3.14);
            alD.add(3.1415);
            System.out.println(alD);
    
        }
    }
    
  • 相关阅读:
    找到了2年前的一个微博小号
    Float Equal Problem
    有用的护肤品贴
    最近状态总结
    [Coursera]Machine Learning
    KMP算法(转载)
    [Leetcode] Median of Two Sorted Arrays
    [Algorithms(Princeton)] Week1
    [Algorithms(Princeton)] Week1
    [Leetcode] Binary Tree Maximum Path Sum
  • 原文地址:https://www.cnblogs.com/leerep/p/14381115.html
Copyright © 2011-2022 走看看