java学习笔记(六)

3.20~~~继续 下午租房~

 java面向对象编程(3) ——  一维数组,排序查找,多维数组

数组大小必须事先指定

对象数组在定义后,赋值时需要再次为每个对象分配空间【即:new对象】

Dog dogs[]=new Dog[4];
for(int i=0;i<dogs.length;i++){
	dogs[i] = new Dog();
}

内排:将需要处理的所有数据都加载到内部存储器中进行排序。交换,选择,插入排序

外排:数据量过大,无法加载到内存,需要借助外部存储进行排序。合并,直接合并排序

 

 

跳过17-20讲

 

 

集合,掌握几个重要的就好

LinkedList,ArrayList,HashMap,Hashtable,Vector,Stack

 

/*
 * 演示java集合的用法
 */

package com.test;

//先引入一个包
import java.util.*;
public class jihe {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//定义ArrayList对象
		ArrayList al=new ArrayList();
		//显示大小
		System.out.println("al大小是:"+al.size());
		//向al中加入数据(类型是Object)
		//创建一个职员
		Clerk clerk1=new Clerk("宋江",50,1000);
		Clerk clerk2=new Clerk("卢俊义",49,800);
		Clerk clerk3=new Clerk("吴用",45,900);
		//将clerk加入到al中
		al.add(clerk1);
		al.add(clerk2);
		al.add(clerk3);
		//?可不可以加入同样的人
		al.add(clerk1);
		//显示大小
		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());
		}
		
		//如何从al中删除一个对象
		al.remove(2);
		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;
	}
}


 

package com.test;
import java.util.*;
import java.io.*;
public class Demo3 {

	/**
	 * @param args
	 */
	public static void main(String[] args)throws Exception{
		// TODO Auto-generated method stub
		//创建 EmpManage
		EmpManage em= 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 operType=br.readLine();
			if(operType.equals("1"))
			{
				System.out.println("请输入编号");
				String empNo=br.readLine();
				System.out.println("请输入名字");
				String name = br.readLine();
				System.out.println("请输入工资");
				float sal=Float.parseFloat(br.readLine());
				
				Emp emp = new Emp(empNo,name,sal);
				em.addEmp(emp);
			}
			else if(operType.equals("2"))
			{
				System.out.println("请输入编号");
				String empNo=br.readLine();
				em.showInfo(empNo);
			}
			else if(operType.equals("3"))
			{
				//em.updateSal(empNo, newSal);
			}
			else if(operType.equals("4"))
			{
				//em.delEmp(empNo);
			}
			else if(operType.equals("5"))
			{
				//退出系统 终止当前正在运行的java虚拟机 0正常,其它 不正常
				System.exit(0);
			}
		}
	}

}

//雇员管理类
class EmpManage
{
	private ArrayList al=null;
	//构造
	public EmpManage()
	{
		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);
			//比较编号
			//字符串==是地址相等!!! equals比较内容相等
			if(emp.getEmpNo().equals(empNo))//用equals
			{
				System.out.println("找到该员工,他的信息是:");
				System.out.println("编号="+empNo);
				System.out.println("名字="+emp.getName());
				System.out.println("薪水="+emp.getSal());
			}
		}
	}
	//修改工资
	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.setSal(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);
			}
		}
	}
	
	
}

//雇员类
class Emp{
	//学号
	private String empNo;
	private String name;
	private float sal;
	//构造函数
	public Emp(String empNo,String name,float sal)
	{
		this.empNo=empNo;
		this.name=name;
		this.sal=sal;
	}
	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 getSal() {
		return sal;
	}
	public void setSal(float sal) {
		this.sal = sal;
	}
}


 

 

//		LinkedList ll=new LinkedList();
//		Emp emp1=new Emp("sa01","aa",1.1f);
//		Emp emp2=new Emp("sa02","bb",2.2f);
//		//表示把emp1加在链表的最前面
//		ll.addFirst(emp1);
//		ll.addFirst(emp2);
//		for(int i=0;i<ll.size();i++)
//		{
//			System.out.println(((Emp)ll.get(i)).getName());
//		}
//		ll.addLast(emp2);
		
		//Vector的用法
//		Vector vv=new Vector();
//		Emp emp1=new Emp("1","aa",1.2f);
//		vv.add(emp1);
//		for(int i=0;i<vv.size();i++)
//		{
//			Emp emp = (Emp)vv.get(i);
//		}
		
		//Stack stack = new Stack();
		//stack.
		
		//创建HashMap
//		HashMap hm = new HashMap();
//              //Map hm =new HashMap();
//		Emp emp1 = new Emp("s001","aaa",3.3f);
//		Emp emp2 = new Emp("s002","bbb",6.6f);
//		Emp emp3 = new Emp("s003","ccc",9.9f);
//		//将emp放入到hm
//		hm.put("s001",emp1);
//		hm.put("s002",emp2);
//		hm.put("s002",emp3);//覆盖
//		//如果要查找编号是s002
//		if(hm.containsKey("s002"))
//		{
//			System.out.println("有这个员工");
//			//如何取出 键值
//			Emp emp=(Emp)hm.get("s002");
//			System.out.println(emp.getName());
//		}else{
//			System.out.println("没有这个员工");
//		}
//		
//		//遍历HashMap中所有的key和value
//		//iterator 迭代器
//		Iterator it=hm.keySet().iterator();
//		//hasNext返回一个布尔值
//		while(it.hasNext())
//		{
//			//取出key
//			String key=it.next().toString();
//			//通过key取出value
//			Emp emp=(Emp)hm.get(key);
//			System.out.println(emp.getEmpNo()+emp.getSal());
//		}
//		
		
		//Hashtable ht=new Hashtable();
		//ht


 

 

 

总结:

  1. 如果要求线程安全,使用Vector、Hashtable
  2. 如果不要求线程安全,使用ArrayList,LinkedList、HashMap
  3. 如果要求键值对,使用HashMap、Hashtable
  4. 如果数据量很大、又要线程安全考虑Vector

 

 







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值