为什么需要集合?(数组定义好了就不能修改了 )
学习了数组之后,充分体会到了数组的优越性,就是可以存放同一类型的数据,但是我们假设有这样的需求,看看如何解决?
请做一个公司的职员薪水管理系统,要求完成如下功能:
1)当有新员工时,将该员工加入到管理系统
2)可以根据员工号,显示该员工的信息
3)可以显示所有员工信息
4)可以修改员工的薪水
5)当员工离职的时候,将该员工从管理系统中删除
6)可以按照薪水从低到高顺序排序{思考题}
7)可以统计员工的平均工资和最低最高工资。
这时候我们可以用链表和集合来做 我们想,如果这样一种数组,它可以动态的改变就好了,java设计者为我们提供一系列的集合类,我们来看看,要是集合不够用 我们在使用链表解决。
图1
图2
从上面的图形我们可以看出来java集合类主要有一下几种:
List结构的集合类
ArrayList类,LinkedList类,Vector类,Stack类
Map结构的集合类
HashMap类,Hashtable类
Set结构的集合类
HashSet类,TreeSet类
Queue结构的集合
Queue接口
/**
* 功能:演示java结合的用法
* @author Administrator
*
*/
//引用一个包
import java.util.*;
public class Demo7 {
public static void main(String args[]){
//定义数组
// Clerk clerk[]=new Clerk[20];
//1定义一个ArrayList对象
ArrayList al=new ArrayList();
//显示大小
System.out.println("al大小是:"+al.size());
//向al中加入数据(类型是object)
//创建一个职员
Clerk clerk1=new Clerk("宋江",50,1000);
Clerk clerk2=new Clerk("吴用",300,5000);
//??可不可以放入同样的对象
Clerk clerk3=new Clerk("宋江",50,1000);
//将clerk1加入到al中
al.add(clerk1);
al.add(clerk2);
al.add(clerk3);
//显示大小
System.out.println("al大小是:"+al.size());
//如何访问al中的对象(数据)
//访问第一对象
// Clerk temp=(Clerk)al.get(0);
// System.out.println("第一个人的名字是:"+temp.getName());
//遍历al所有的对象
for (int i = 0; i < al.size(); i++) {
Clerk temp=(Clerk)al.get(i);
System.out.println("删除前名字是:"+temp.getName());
}
//如何从a1中删除一个对象
al.remove(1);
System.out.println("删除吴用");
//遍历al所有的对象
for (int i = 0; i < al.size(); i++) {
Clerk temp=(Clerk)al.get(i);
System.out.println("删除后名字是:"+temp.getName());
}
}
}
//定义一个员工类
class Clerk{
private String name;
private int age;
private float sal;
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;
}
public Clerk(String name,int age,float sal){
this.name=name;
this.age=age;
this.sal=sal;
}
}
输出:al大小是:0
al大小是:3
删除前名字是:宋江
删除前名字是:吴用
删除前名字是:宋江
删除吴用
删除后名字是:宋江
删除后名字是:宋江