您的位置:首页 > 编程语言 > Java开发

JavaSE学习(10) 集合框架

2016-12-09 21:14 369 查看
集合:

List结构的集合类:

ArrayList类,LinkedList类,Vector类,Stack类

Map结构的集合类:

HashMap类,Hashtable类

Set结构的集合类

HashSet类,TreeSet类

Queue结构的集合

Queue接口

ArrayList和Vector的区别:

都是java集合类,都用来存放java对象

不同点:

1)Vector是同步的,这个类中的一些方法保证了Vector中的对象是线程安全的。而ArrayList则是异步的,因此ArrayList中的对象并不是线程安全的。

2)数据增长:

从内部机制它们都是使用Array来控制集合中的对象。当增加元素的shi

HashMap和Hashtable区别:

都是java集合类,都用来存放java对象

区别:

1)Hashtable是基于陈旧的Directionary类,HashMap是java1.2引进的Map接口的一个实现

2)同步性:

Hashtable是同步的。这个类中的一些方法保证了Hashtable中的对象是线程安全的。而HashMap则是异步的,因此HashMap中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果不需要线程安全的集合那么使用HashMap是一个很好的选择,可以避免同步带来的不必要的开销,从而提高效率。

3)值:

HashMap允许将空值作为一个表的条目的key或value,但是Hashtable是不能放入空值的(null)。

总结:

1)要求线程安全,使用Vector、Hashtable

2)不要求线程安全,使用ArrayList,LinkedList、HashMap

3)要求键值,使用HashMap,Hashtable

4)数据量很大,又要线程安全考虑Vector

/
/*
* 功能:Java集合的用法
*
* */
package com.test1;
//先引入一个包
import java.util.*;

public class Demo7_1 {

public static void main(String[] args) {
// TODO Auto-generated method stub
//Clerk clerk[]=new Clerk[??];
//定义ArrayList对象
ArrayList al=new ArrayList();
//显示大小
System.out.println("al大小:"+al.size());
//向al中加入数据(类型是Object)
//创建一个职员
Clerk clerk1=new Clerk("宋江",50,1000);
Clerk clerk2=new Clerk("吴用",45,1000);
//将clerk1加入al中
al.add(clerk1);
al.add(clerk2);
//显示大小
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 temp1=(Clerk)al.get(i);
System.out.println("第"+(i+1)+"个人名字:"+temp1.getName());
}
//如何从al中删除一个对象
al.remove(1);
System.out.println("=======删除吴用========");
//遍历al所有的对象
for(int i=0;i<al.size();i++){
Clerk temp1=(Clerk)al.get(i);
System.out.println("第"+(i+1)+"个人名字:"+temp1.getName());
}
}

}
//定义一个员工类
class Clerk{
private String name;
private int age;
private float salary;
public Clerk(String name,int age,float salary) {
// TODO Auto-generated constructor stub
this.name=name;
this.age=age;
this.salary=salary;
}
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 getSalary() {
return salary;
}
public void setSalary(float salary) {
this.salary = salary;
}
}
package com.test1;

import java.io.*;
import java.util.*;

public class Demo7_2 {

public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
//演示
/*	String a=new String("abc");
String b=new String("abc");
if(a.equals(b))//if(a==b)是两个变量的地址
{
System.out.println("same");
}*/
//创建EmpManage对象
EmpManage empManage=new EmpManage();
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//菜单
while(true){
System.out.println("请你选择要进行的操作:");
System.out.println("1:添加一个雇员:");
System.out.println("2:查找一个雇员:");
System.out.println("3:修改一个雇员工资:");
System.out.println("4:删除一个雇员:");
System.out.println("5:显示雇员信息:");
String openType=br.readLine();
if(openType.equals("1")){
System.out.println("请输入编号:");
String empNo=br.readLine();
System.out.println("请输入名字:");
String name=br.readLine();
System.out.println("请输入工资:");
float salary=Float.parseFloat(br.readLine());
Emp emp=new Emp(empNo, name, salary);
empManage.addEmp(emp);

}else if(openType.equals("2")){
System.out.println("请输入编号:");
String empNo=br.readLine();
empManage.showInfo(empNo);

}else if(openType.equals("3")){
System.out.println("请输入编号:");
String empNo=br.readLine();
System.out.println("请输入工资:");
float newSal=Float.parseFloat(br.readLine());
empManage.updateSal(empNo, newSal);

}else if(openType.equals("4")){
System.out.println("请输入编号:");
String empNo=br.readLine();
empManage.delEmp(empNo);

}else if(openType.equals("5")){
System.out.println("请输入编号:");
String empNo=br.readLine();
empManage.showInfo(empNo);
}else {
//退出系统
System.exit(0);
//break;
}
}
}

}
//雇员管理类
class EmpManage{
private ArrayList al=null;
public EmpManage() {
// TODO Auto-generated constructor stub
al=new ArrayList();
}
//加入员工
public void addEmp(Emp emp){
al.add(emp);
}
//显示员工的相关信息
public void showInfo(String empNo){
//遍历整个ArrayList
for(int i=0;i<al.size();i++){
//取出Emp对象
Emp emp=(Emp)al.get(i);
//比较编号
if(emp.getEmpNo().equals(empNo)){
System.out.println("找到该员工,他的信息是:");
System.out.println("编号:"+empNo);
System.out.println("姓名:"+emp.getName());
System.out.println("薪水:"+emp.getSalary());
}
}
}
//修改工资
public void updateSal(String empNo,float newSal){
for(int i=0;i<al.size();i++){
Emp emp=(Emp)al.get(i);
if(emp.getEmpNo().equals(empNo)){
//修改薪水
emp.setSalary(newSal);
}
}
}
public void delEmp(String empNo){
for(int i=0;i<al.size();i++){
Emp emp=(Emp)al.get(i);
if(emp.getEmpNo().equals(empNo)){
al.remove(i);
//al.remove(emp);
}else{
System.out.println("查无此人!");
}
}
}
public void avgSalary(){
float sumSal=0f;
float avgSal=0f;
int count=0;
for(int i=0;i<al.size();i++){
Emp emp=(Emp)al.get(i);
sumSal+=emp.getSalary();
}
System.out.println("平均工资:"+sumSal/count);
}
}
//雇员类
class Emp{
private String empNo;
private String name;
private float salary;
public Emp(String empNo,String name,float salary) {
// TODO Auto-generated constructor stub
this.empNo=empNo;
this.name=name;
this.salary=salary;
}
public String getEmpNo() {
return empNo;
}
public void setEmpNo(String empNo) {
this.empNo = empNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getSalary() {
return salary;
}
public void setSalary(float salary) {
this.salary = salary;
}
}





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JAVASE JAVA