集合框架
有事我们会需要一个能够动态的调整大小的数组,比如说要添加新员工但是数组已经满了,并且数组的大小是在定义的时候定死的,所以我们就需要一个能够动态调整大小的数组或者用链表解决,而java中提供了这样一组数组,名为集合类。(有事还是需要链表来解决一些问题的)
重要的就是linkedlist,arraylist,vector,hashset,hashmap
从图中可以看出Java的集合类主要有以下几种:
- List结构的集合类 —— ArrayList类,LinkedList类,Vector类,Stack类
- Map结构的集合类 —— HashMap类,HashTable类
- Set结构的集合类 —— HashSet类,Hashtable类
- Queue结构的集合 —— Queue接口
List类——列表结构
ArrayList和Vector的区别
- 同步性:Vector是同步的而ArrayList则是异步的。所以ArrayList是不安全的但是效率高。
- 数据增长:Vector会增长一倍的原数组的大小,ArrayList会增长原来的50%,所以集合所占的空间要比实际的需求要大
ArrayList类
//使用ArrayList类就要引入一个包 import java.util.*; public class test1 { public static void main(String[] args) { //定义一个ArrayList对象 ArrayList al = new ArrayList(); //显示大小,用ArrayList类提供的size方法 System.out.println("大小是:"+al.size()); //向al中加入数据(类型是Object,Java中所有的类都是从Object中集成下来的,这意味着集合中可以放所有类型的类) //创建一个职员 Clerk clerk1 = new Clerk("松江", 50, 1000); Clerk clerk2 = new Clerk("吴用",45,1200); //将clerk1加入到al中 al.add(clerk1);//默认加载到尾部 al.add(clerk2); System.out.println("大小是:"+al.size()); //如何访问al中对象(数据) //访问第一个对象 //Clerk temp = al.get(0);//get()返回的对象是object类型的,是clerk类型的父类,所以会报错 //强制转换 Clerk temp = (Clerk)al.get(0); System.out.println("第一个人的名字是:"+ temp.getName()); //从al中删除一个对象 al.remove(1); } } class Clerk { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public float getSal() { return sal; } public void setSal(float sal) { this.sal = sal; } private int age; private float sal; public Clerk(String name,int age,float sal) { this.name = name; this.age = age; this.sal = sal; } }