泛型数组列表 举例

在运行的时候改变数组大小,以前常用
int count = 5; Employee em = new Employee[count;]
如果用泛型数组列表会更方便.
ArrayList是一个有类型参数的泛型类。


1.声明数组

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

//这也称为菱形语法,因为空尖括号<>像是菱形。
编译器会检查新值要做什么。如果赋值给一个变量,或传递给某个方法,或者从某个方法返回,编译器会检查这个变量、参数或者方法的泛型类型,然后将这个类型放在<>中,在这个例子中,new ArrayList<>()将赋值给一个类型为ArrayList的变量,所以泛型类型为Employee。

2.添加元素

staff.add(new Employee("Carl Cracker", 75000, 1987, 12, 15));

3.更新数组容量

staff.ensureCapacity(100);

这个方法调用将分配一个包含100个对象的内部数组。这样一来,前100次add调用不会带来开销很大的重新分配空间。
还可以把初始容量传递ArrayList构造器

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

4.查看数组个数

size方法能够返回数组列表中包含的实际元素个数

staff.size();

相当于staff.length

5.恒定数组大小

staff.trimToSize();
这个方法将存储块的大小调整为保存当前元素数量所需要的存储空间。

6.访问数组列表

要设置第i个元素,可以使用

staff.set(i,Jcak);

等价于a[i] = Jack;
要得到一个数组列表的元素,可以

Employee e = staff.get(i);

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

7.删除数组

Employee e = staff.remove(n);
n代表位置n


完整代码

package test0;

import java.time.LocalDate;
import java.util.*;

public class ArrayListtest
{
   public static void main(String[] args)
   {
      // fill the staff array list with three Employee objects
      ArrayList<Employee> staff = new ArrayList<Employee>();

      staff.add(new Employee("Carl Cracker", 75000, 1987, 12, 15));
      staff.add(new Employee("Harry Hacker", 50000, 1989, 10, 1));
      staff.add(new Employee("Tony Tester", 40000, 1990, 3, 15));
      
      //替换
      staff.set(0,new Employee("Soul",93333,1996,4,2));
      
      //删除
      staff.remove(2);      

      //在第一个位上增加
      staff.add(1, new Employee("Jack",50400,2000,5,3));

      for (Employee e : staff)
         e.raiseSalary(5);

      // print out information about all Employee objects
      for (Employee e : staff)
         System.out.println("name=" + e.getName() + ",salary=" + e.getSalary() + ",hireDay=" 
            + e.getHireDay());
   }
}

class Employee
{
   private String name;
   private double salary;
   private LocalDate hireDay;

   public Employee(String name, double salary, int year, int month, int day)
   {
      this.name = name;
      this.salary = salary;
      hireDay = LocalDate.of(year, month, day);
   }

   public String getName()
   {
      return name;
   }

   public double getSalary()
   {
      return salary;
   }

   public LocalDate getHireDay()
   {
      return hireDay;
   }

   public void raiseSalary(double byPercent)
   {
      double raise = salary * byPercent / 100;
      salary += raise;
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值