集合
为什么需要
需要添加员工的信息 数组不能动态改变
解决方案 链表 集合类
list 集合类 ArrayList LinkedList Vector Stack
Map集合类 HashMap Hashtable
Set集合类 HashSet TreeSet
Queue 结构的集合 Queue 接口
arraylist 和 vector 的区别 vector 同步 更加安全 arraylist 是异步的 数据增长 vector 增长为原来的两倍 arraylist 原来的1.5倍
public class shuzu {
/**
* @param args
*/
public static void main(String[] args) {
ArrayList al= new ArrayList();
//显示大小
System.out.println("al daxiao " + al.size());
//向 al 中加入数据 (类型是 object)
// 创建一个职员
clerk clerk1= new clerk("songji",50,1000);
clerk clerk2= new clerk("songjii",50,1000);
al.add(clerk1);
al.add(clerk2);
al.add(clerk1);//可以添加重复元素
al.add(clerk2);
System.out.println("al daxiao " + al.size());
// clerk temp=al.get(0); // 这个不允许 因为arraylist 里边的哦数据类型是 object 只能强制转换
clerk temp=(clerk)al.get(0); //访问第一个对象
System.out.println("第一个元素的名字是" + temp.getName());
//遍历 取出元素
for(int i=0;i<al.size();i++){
clerk temp1=(clerk)al.get(i);
System.out.println("name="+temp1.getName());
}
//删除一个元素
al.remove(1);System.out.println("============");
for(int i=0;i<al.size();i++){
clerk temp1=(clerk)al.get(i);
System.out.println("name="+temp1.getName());
}
clerk temp2 =(clerk)al.get(1);
System.out.println(temp.getName());
}
}
class clerk
{
private String name;
private int age ;
private float sal;
clerk(String name,int age,float sal){
this.name=name;
this.age=age;
this.sal=sal;
}
public String getName() {
return name;
}
}
结果是
al daxiao 0
al daxiao 4
第一个元素的名字是songji
name=songji
name=songjii
name=songji
name=songjii
============
name=songji
name=songji
name=songjii
songji
链表
public static void main(String[] args) {
LinkedList ll=new LinkedList();
Emp emp1=new Emp("sa01","aa", 1.2f);
Emp emp2=new Emp("sa01","bb", 1.2f);
//特征 可以选择性加入到前边 或者后边
ll.addFirst(emp1);//表示把emp1加在链表的最前面
ll.addFirst(emp2);
for(int i=0;i<ll.size();i++)
{
Emp temp=(Emp)ll.get(i);
System.out.println("name="+temp.getName());
}
}
向量
public static void main(String[] args) {
Vector vv= new Vector();
Emp emp1=new Emp("asdfsa","aa",1.2f);
vv.add(emp1);
for(int i=0;i<vv.size();i++)
{
Emp emp= (Emp)vv.get(i);//也必须要强制转换
}
差不多