• Core Java的那点事儿之ArrayList


    Core Java的那点事儿之ArrayList

      万丈高楼平地起,Java基础要拿起。今天就从我看的Core Java里找了些小基础点来分享一下。

      首先隆重介绍一下专业级龙套演员---Employee类(PS:我可是专注龙套30年),下面会有多次出场,因此先在此介绍一下:

    1 class Employee{
    2   private String name;
    3   private double salary;
    4   private int id;
    5 
    6   //下面是set、get方法  
    7 }

    ArrayList

      首先有请ArrayList登场并进行自我介绍:我是一个采用类型参数(Type parameter)的泛型类(generic class)。为了指定数组列表保存的元素对象类型,我使用一对尖括号将类名括起来加在后面,例如,ArrayList<Employee>(Employee:终于轮到我龙套出场了)...balabala(此处省略10086字)。好了,下面来介绍下怎么来使用他。

      1.声明:

    1 ArrayList<Employee> staff = new ArrayList<Employee>();

      天哪,两边都有Employee,这也太麻烦了吧。如果嫌麻烦的话,请使用Java7,在Java7中,可以省去右边的类型参数就像下面这样子:

    1 ArrayList<Employee> staff = new ArrayList<>();

      这又被称为“菱形”语法,因为空的尖括号就像是一个菱形。可以结合new操作符使用菱形语法。编译器会检查新值是什么,如果赋值给一个变量,或传递到某个方法,或者从某个方法返回,编译器会检查这个变量、参数或方法的泛型类型,然后将这个类型放在<>中,在本例中,龙套演员是Employee,因此泛型类型就是Employee。

      2.添加

    1 staff.add(new Employee("Harry Hacker"....));
    2 staff.add(new Employee("Tony Michel"...));

       3.获取数组实际大小

    1 staff.size();

      4.访问数组列表元素

      4.1.替换:

    1 staff.set(i,harry);

       注意:此方法在一定程度上等同于a[i]=harry。但是此方法只能替换数组中已经存在的元素内容。

      4.2.获取

    1 Employee e = staff.get(i);

      等价于:Employee e = a[i];

      5.插入新元素:

    1 ArrayList<X> list = new ArrayList<>();
    2 while(...)
    3 {
    4    x=...;
    5    list.add(x);  
    6 }
    View Code

       然后可以使用toArray方法将数组拷贝到一个数组中。

    1 X[] a = new X[list.size()];
    2 list.toArray(a);

       除此之外,还可以在数组列表中间加入元素:

    1 int n = staff.size()/2;
    2 staff.add(n, e);

       6.删除元素

    1 Employee e = staff.remove(n);

       7.遍历数组

      常规方法

    1 for(int i = 0; i<staff.size(); i++)
    2  {
    3     Employee e = staff.get(i);
    4     //do somne thing with e
    5  }

       逼格稍高点的方法(for each循环):  

    1 for(Empolyee e : staff)
    2  {
    3     // do something withe e
    4  }

       

      PS:本博客欢迎转发,但请注明博客地址及作者~

       博客地址:http://www.cnblogs.com/voidy/

       <。)#)))≦

  • 相关阅读:
    12.python中的列表
    11.python中的元组
    10.python中的序列
    9.python的布尔类型与流程控制
    8.python中的数字
    7.python字符串-内置方法分析
    Boost--lexical_cast 一个方便安全高效的string转换库
    STL进阶--vector vs deque
    STL进阶--删除元素
    STL进阶--相等 vs 等价 (Equality vs Equivalence)
  • 原文地址:https://www.cnblogs.com/voidy/p/4171978.html
Copyright © 2020-2023  润新知