Java-Java基础02之集合类及常用排序及位运算

项目文件结构
项目文件结构

主要内容有:Java基础中的java的数组、冒泡排序、选择排序、快速排序、集合类及移位运算。

数组

Class5 / com.test1 / Demo5_1.java:

/*  
 * 功能:数组的必要性  
 */  
  
package com.test1;   
  
public class Demo5_1 {   
  
    /**  
     * @param args  
     */  
    public static void main(String[] args)    
    {   
        //定义一个可以存放六个float类型的数组   
        float[] arr=new float[6];   
        //给数组的各个元数赋值   
        arr[0]=3;   
        arr[1]=5;   
        arr[2]=1;   
        arr[3]=3.4f;   
        arr[4]=2;   
        arr[5]=50;   
        //算总体重   
        float all=0;   
        for(int i=0;i<6;i++)   
        {   
            all+=arr[i];   
        }   
        System.out.println("总体重是:"+all);   
           
        //定义一个size=5的int数组   
        int[] arr1;   
        arr1=new int[5];   
           
        //如果你访问的数组范围大了   
        //arr[5]=10;   
        //如何知道数组的大小   
        System.out.println("数组arr1的大小:"+arr1.length);   
           
        //滑板比赛   
        float arr2[]={3,6,7.1f,1.1f,3};   
        float all2=0;   
        for(int i=0;i<arr2.length;i++)   
        {   
            all2+=arr2[i];   
        }   
        System.out.println("平均时间:"+(all2/arr2.length));   
    }   
}

Class5 / com.test5_2 / Demo5_2.java:

/*  
 * 功能:对象数组的使用  
 */  
  
package com.test1;   
  
import java.io.BufferedReader;   
import java.io.InputStreamReader;   
  
public class Demo5_2 {   
  
    /**  
     * @param args  
     */  
    public static void main(String[] args) throws Exception {   
        //定义一个可以存放四只狗的对象数组   
        Dog dogs[]=new Dog[4];   
        //创建一个能存放4只狗的Dog[]对象数组   
           
        /*  
        //给各个狗赋初值  
        dogs[0]=new Dog();//将dogs[0]存放创建一只狗的空间的地址  
        dogs[0].setName("花花");  
        dogs[0].setWeight(4.5f);  
        */  
        //从控制台输入各个狗的信息   
        InputStreamReader isr=new InputStreamReader(System.in);//IO流   
        BufferedReader br=new BufferedReader(isr);//将IO流转成Buffer流   
        for(int i=0;i<4;i++)   
        {   
            dogs[i]=new Dog();   
            System.out.println("请输入第"+(i+1)+"只狗的狗名:");   
            String name=br.readLine();//从控制台读取狗名   
            System.out.println("请输入第"+(i+1)+"只狗的体重:");   
            String s_weight=br.readLine();//从控制台读取体重   
            float weight=Float.parseFloat(s_weight);//将String转成float类型   
            //将名字赋给对象   
            dogs[i].setName(name);   
            //将体重赋给对象   
            dogs[i].setWeight(weight);   
               
        }   
        //计算总体重   
        float allWeight=0;   
        for(int i=0;i<4;i++)   
        {   
            allWeight+=dogs[i].getWeight();   
        }   
        //计算平均体重   
        float avgWeight=allWeight/dogs.length;   
        System.out.println("总体重="+allWeight+" 平均="+avgWeight);   
           
        //找出体重最大的狗   
        //假设第一只狗体重最大   
        float maxWeight=dogs[0].getWeight();   
        int maxIndex=0;   
        //依次比较狗的体重   
        for(int i=1;i<dogs.length;i++)   
        {   
            if(maxWeight<dogs[i].getWeight())   
            {   
                //修改   
                maxWeight=dogs[i].getWeight();   
                maxIndex=i;   
            }   
        }   
        System.out.println("体重最大的狗是第"+(maxIndex+1)+"只狗,其体重是:"  
                +dogs[maxIndex].getWeight());   
           
        //输入狗的名字,查找它的体重   
        BufferedReader nam=new BufferedReader(isr);   
        System.out.println("请输入想要查找体重的狗的名字:");   
        String dogName=nam.readLine();   
        for(int i=1;i<dogs.length;i++)   
        {   
            if(dogName.equals(dogs[i].getName()))   
            {   
                System.out.println(dogName+"的体重是:"+dogs[i].getWeight());   
            }   
        }   
    }   
    /*  
     * 数组总结:  
     * 1.数组可存放同一类型数据  
     * 2.简单数据类型(int,float)数组,可直接赋值  
     * 3.对象数组定义后,赋值时需要再次为每个对象分配空间[即:new 对象]  
     * 4.数组大小 必须事先指定  
     * 5.数组名可以理解为执行数组首地址的引用  
     * 6.数组的下标是从0开始编号的  
     */  
}   
  
//定义一个狗类   
class Dog   
{   
    private String name;   
    private float weight;   
    public float getWeight() {   
        return weight;   
    }   
    public void setWeight(float weight) {   
        this.weight = weight;   
    }   
    public String getName() {   
        return name;   
    }   
    public void setName(String name) {   
        this.name = name;   
    }   
}  

Class5 / com.test1 / Demo5_5.java:

/*  
 * 功能:二维数组  
 */  
  
package com.test1;   
  
public class Demo5_5 {   
  
    /**  
     * @param args  
     */  
    public static void main(String[] args) {   
        int[][] a=new int[4][6];   
        a[1][2]=1;   
        a[2][1]=2;   
        a[2][3]=3;   
        //把图形输出   
        //行   
        for(int i=0;i<4;i++)   
        {   
            //列   
            for(int j=0;j<6;j++)   
            {   
                System.out.print(a[i][j]+" ");   
            }   
            System.out.print("\n");   
        }   
    }   
}

排序与查找

排序介绍
排序介绍

冒泡排序
冒泡排序

选择排序
选择排序
选择排序

快速排序
快速排序
快速排序

Class5 / com.test1 / Demo5_3.java:

/*  
 * 功能:演示各种排序法  
 */  
  
package com.test1;   
import java.util.Calendar;   
  
public class Demo5_3 {   
  
    /**  
     * @param args  
     */  
    public static void main(String[] args)    
    {   
        int len=10;   
        int[] arr=new int[len];   
        for(int i=0;i<len;i++)   
        {   
            //让程序随机产生一个1-10000的数   
            //int t=(int)(Math.random()*10000);   
            int t=(int)(Math.random()*100);   
            //Math.random()会随机产生一个0~1的数   
            arr[i]=t;   
        }   
        //int arr[]={1,6,0,-1,9,2,14,24,5};   
           
        //创建一个Bubble实例   
        Bubble bubble=new Bubble();   
        //在排序前打印系统时间   
        Calendar cal=Calendar.getInstance();//获得实例    
        System.out.print("冒泡排序前:"+cal.getTime());   
           
        bubble.sort(arr);//排序,通过引用修改arr数组的顺序   
           
        cal=Calendar.getInstance();//重新获得实例    
        System.out.print("\n冒泡排序后:"+cal.getTime());   
           
        //输出冒泡排序后的结果,打印有序数列   
        System.out.print("\n冒泡排序的结果:");   
        for(int i=0;i<arr.length;i++)   
        {   
            System.out.print(arr[i]+" ");   
        }   
           
        int a=12;   
        bubble.test(a);//简单数据类型传到函数中,它的改变不会导致外面的修改   
        System.out.println("\n\na="+a);   
           
        //-----------------------------------------------------   
        //创建一个Select实例   
        Select select=new Select();   
        //在排序前打印系统时间   
        cal=Calendar.getInstance();//获得实例    
        System.out.print("\n选择排序前:"+cal.getTime());   
           
        //排序   
        select.sort(arr);   
           
        cal=Calendar.getInstance();//重新获得实例    
        System.out.print("\n选择排序后:"+cal.getTime());   
           
        //输出选择排序后的结果,打印有序数列   
        System.out.print("\n选择排序的结果:");   
        for(int i=0;i<arr.length;i++)   
        {   
            System.out.print(arr[i]+" ");   
        }   
           
        //-------------------------------------------------   
        //创建一个InsertSort实例   
        InsertSort is=new InsertSort();   
        //在排序前打印系统时间   
        cal=Calendar.getInstance();//获得实例    
        System.out.print("\n\n插入排序前:"+cal.getTime());   
           
        //排序   
        is.sort(arr);   
           
        cal=Calendar.getInstance();//重新获得实例    
        System.out.print("\n插入排序后:"+cal.getTime());   
           
        //输出选择排序后的结果,打印有序数列   
        System.out.print("\n插入排序的结果:");   
        for(int i=0;i<arr.length;i++)   
        {   
            System.out.print(arr[i]+" ");   
        }   
           
        //-------------------------------------------------   
        //创建一个QuickSort实例   
        QuickSort qs=new QuickSort();   
        //在排序前打印系统时间   
        cal=Calendar.getInstance();//获得实例    
        System.out.print("\n\n快速排序前:"+cal.getTime());   
           
        //排序   
        qs.sort(0,arr.length-1,arr);   
           
        cal=Calendar.getInstance();//重新获得实例    
        System.out.print("\n快速排序后:"+cal.getTime());   
           
        //输出选择排序后的结果,打印有序数列   
        System.out.print("\n快速排序的结果:");   
        for(int i=0;i<arr.length;i++)   
        {   
            System.out.print(arr[i]+" ");   
        }   
    }   
  
}   
  
class Bubble   
{   
    //测试   
    public void test(int a)   
    {   
        a++;   
    }   
       
    //冒泡排序   
    public void sort(int arr[])   
    {   
        int temp=0;   
        //外层循环,决定一共走几趟   
        for(int i=0;i<arr.length-1;i++)   
        {   
            //内层循环,开始逐个比较,如果发现前一个数比后一个数大,则交换    
            for(int j=0;j<arr.length-1-i;j++)   
            {   
                if(arr[j]>arr[j+1])   
                {   
                    //换位   
                    temp=arr[j];   
                    arr[j]=arr[j+1];   
                    arr[j+1]=temp;   
                }   
            }   
        }   
    }   
}   
  
class Select   
{   
    //选择排序   
    public void sort(int arr[])   
    {   
        int temp=0;//临时变量   
        for(int j=0;j<arr.length-1;j++)   
        //j<arr.length说明当只剩最后一个数没比较时,不必再比较了   
        {   
            //假设第j个数是最小的数   
            int min=arr[j];   
            //记录最小数的下标   
            int minIndex=j;   
            for(int k=j+1;k<arr.length;k++)   
            //k<arr.length说明只剩两个数未比较时,最后一个数要参与比较   
            {   
                if(min>arr[k])   
                {   
                    //修改最小   
                    min=arr[k];   
                    minIndex=k;   
                }   
            }   
            //当退出内层for循环时,就找到这次的最小值   
            temp=arr[j];   
            arr[j]=arr[minIndex];   
            arr[minIndex]=temp;   
        }   
    }   
}   
  
//插入排序   
class InsertSort   
{   
    //插入排序方法   
    public void sort(int arr[])   
    {   
        for(int i=1;i<arr.length;i++)   
        {   
            int insertVal=arr[i];   
            //insertVal准备和前一个数比较   
            int index=i-1;   
            while(index>=0&&insertVal<arr[index])   
            {   
                //将把arr[index]向后移动一位   
                arr[index+1]=arr[index];   
                //让index向前移动   
                index--;   
            }   
            //将insertVal插入到行当 位置   
            arr[index+1]=insertVal;   
        }   
    }   
}   
  
//快速排序   
class QuickSort   
{   
    public void sort(int left,int right,int[] array)   
    {   
        int l=left;//左边   
        int r=right;//右边   
        int pivot=array[(left+right)/2];//中间的作为隔板数   
        int temp=0;   
        while(l<r)   
        {   
            while(array[l]<pivot) l++;   
            while(array[r]>pivot) r--;   
            if(l>=r) break;   
            temp=array[l];   
            array[l]=array[r];   
            array[r]=temp;   
               
            if(array[l]==pivot) --r;   
            if(array[r]==pivot) ++l;   
        }   
        if(l==r)   
        {   
            l++;   
            r--;   
        }   
        if(left<r) sort(left,r,array);   
        if(right>l) sort(l,right,array);            
    }   
}  

Class5 / com.test1 / Demo5_4.java:

/*  
 * 功能:二分查找  
 */  
  
package com.test1;   
  
public class Demo5_4 {   
  
    /**  
     * @param args  
     */  
    public static void main(String[] args) {   
        int arr[]={2,5,7,12,25};   
        BinaryFind bf=new BinaryFind();   
        bf.find(0, arr.length-1, 4, arr);   
    }   
}   
  
//二分查找   
class BinaryFind   
{   
    public void find(int leftIndex,int rightIndex,int val,int[] arr)   
    {   
        //首先找到中间的数   
        int midIndex=(rightIndex+leftIndex)/2;   
        int midVal=arr[midIndex];   
        if(rightIndex>=leftIndex)   
        {   
            //如果要找的数比midVal大   
            if(midVal>val)   
            {   
                //在arr的左边数中找   
                find(leftIndex,midIndex-1,val,arr);//递归   
            }   
            else if(midVal<val)   
            {   
                //在arr的右边的数找   
                find(midIndex+1,rightIndex,val,arr);//递归   
            }   
            else if(midVal==val)   
            {   
                System.out.println("找到下标"+midIndex);   
            }   
        }   
        else  
        {   
            System.out.println("没有找到!");   
        }   
    }   
}

集合类及移位运算
集合类及移位运算
集合类及移位运算
集合类及移位运算

Class7 / com.test1 / Demo7_1.java:

/*  
 * 功能:演示java集合的用法  
 */  
  
package com.test1;   
import java.util.*;   
public class Demo7_1 {   
  
    /**  
     * @param args  
     */  
    public static void main(String[] args) {   
        //定数组   
        //Clerk []clerks=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,1200);   
        Clerk clerk3=new Clerk("林冲",35,1300);   
        //将clerk1加入到al中   
        al.add(clerk1);   
        al.add(clerk2);   
        al.add(clerk3);   
        //显示大小   
        System.out.println("al大小:"+al.size());   
        //如何访问al中对象(数据)   
        //访问第一个对象   
        Clerk temp=(Clerk)al.get(0);//因为get返回的是一个object   
        System.out.println("第一个名字是:"+temp.getName());   
           
        //遍历al所有的对象   
        System.out.println("删除前");   
        for(int i=0;i<al.size();i++)   
        {   
            Clerk temp1=(Clerk)al.get(i);   
            System.out.println("名字是:"+temp1.getName());   
        }   
        //从al中删除一个对象   
        al.remove(1);//删除吴用   
        System.out.println("=====删除吴用======");   
        //删除后   
        System.out.println("删除后");   
        for(int i=0;i<al.size();i++)   
        {   
            Clerk temp1=(Clerk)al.get(i);   
            System.out.println("名字是:"+temp1.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;   
    }   
} 

Class7 / com.test1 / Demo7_2.java:

/*  
 * 功能:做一个公司职员薪水管理系统,要求完成如下功能 :  
 * 1.当有新员工时,将该员工加入到管理系统  
 * 2.可以根据员工号,显示该员工的信息  
 * 3.可以显示所员工信息  
 * 4.可以修改员工薪水  
 * 5.当员工离职时,将该员工从管理系统中删除  
 * 6.可以按照薪水从低到高顺序排序  
 * 7.可以统计员工的平均工资和最低、最高工资  
 */  
  
package com.test1;   
  
import java.io.BufferedReader;   
import java.io.IOException;   
import java.io.InputStreamReader;   
import java.util.ArrayList;   
  
public class Demo7_2 {   
  
    /**  
     * @param args  
     * @throws IOException   
     */  
    public static void main(String[] args) throws IOException {   
        //演示   
        String a=new String("abc");   
        String b=new String("abc");   
        if(a==b)   
        {   
            System.out.println("== ok");   
        }   
        else if(a.equals(b))   
        {   
            System.out.println("equals ok");   
        }   
        else ;   
           
        //创建EmpManage对象   
        EmpManage em=new EmpManage();   
        //Emp emptemp=new Emp(null,null,0);   
        //定义一个BufferedReader流   
        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:删除一个雇员");   
            System.out.println("6:退出系统");   
               
            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);   
                Emp emptemp=em.addEmp(emp);   
                //这里的"="相当于将返回的emp内存块直接复制一份给emptemp,即创建的同时   
                //也就初始化了,所心不必再考的emptemp内部的属性是private,还是public,"="相当于直接复制   
                System.out.println("=====添加"+emptemp.getName()+"成功!======\n");   
            }   
            else if(operType.equals("2"))   
            {   
                System.out.println("请输入编号:");   
                String empNo=br.readLine();   
                //查找   
                Emp emptemp=em.showInfo(empNo);   
                System.out.println("=====查找"+empNo+"("+emptemp.getName()+")"+"成功!======\n");   
            }   
            else if(operType.equals("3"))   
            {   
                //显示所有员工信息   
                em.showAllInfo();   
                System.out.println("=====已列出!======\n");   
            }   
            else if(operType.equals("4"))   
            {   
                System.out.println("请输入编号:");   
                String empNo=br.readLine();   
                System.out.println("请输入工资:");   
                float sal=Float.parseFloat(br.readLine());   
                //修改   
                Emp emptemp=em.updateSal(empNo, sal);   
                System.out.println("=====修改"+empNo+"("+emptemp.getName()+")"+"工资成功!======\n");   
            }   
            else if(operType.equals("5"))   
            {   
                System.out.println("请输入编号:");   
                String empNo=br.readLine();   
                //删除   
                Emp emptemp=em.delEmp(empNo);   
                System.out.println("=====删除"+empNo+"("+emptemp.getName()+")"+"成功!======\n");   
            }   
            else if(operType.equals("6"))   
            {   
                //退出系统   
                System.exit(0);//0表示正常退出JVM,非0表示异常退出JVM   
            }   
        }   
           
    }   
  
}   
  
//雇员类   
class Emp   
{   
    //学号   
    private String empNo;   
    private String name;   
    private float 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;   
    }   
       
    //构造函数   
    public Emp(String empNo,String name,float sal)   
    {   
        this.empNo=empNo;   
        this.name=name;   
        this.sal=sal;   
    }   
}   
  
//雇员管理类   
class EmpManage   
{   
    private ArrayList al=null;   
    public EmpManage()   
    {   
        al=new ArrayList();   
    }   
    //加入员工   
    public Emp addEmp(Emp emp)   
    {   
        if(al.add(emp))//如果添加成功   
            return emp;   
        else  
            return null;   
    }   
    //显示指定员工的相关信息   
    public Emp 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("编号="+emp.getEmpNo());   
                System.out.println("名字="+emp.getName());   
                System.out.println("工资="+emp.getSal());   
                   
                return emp;   
            }   
        }   
        return null;   
    }   
    //显示所有员工的信息   
    public void showAllInfo()   
    {   
        //遍历整个ArrayList   
        for(int i=0;i<al.size();i++)   
        {   
            Emp emp=(Emp)al.get(i);   
            System.out.print("编号:"+emp.getEmpNo()+" "  
                    +"名字:"+emp.getName()+" "  
                    +"工资:"+emp.getSal()+" "+"\n");   
        }   
    }   
    //修改工资   
    public Emp 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);   
                return emp;   
            }   
        }   
        return null;   
    }   
    //删除员工   
    public Emp 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);//按对象删除员工   
                return emp;   
            }   
        }   
        return null;   
    }   
} 

Class7 / com.test1 / Demo7_3.java:

/*  
 * 功能:各种集合的使用  
 */  
package com.test1;   
  
import java.util.HashMap;   
import java.util.Hashtable;   
import java.util.Iterator;   
import java.util.LinkedList;   
import java.util.Stack;   
import java.util.Vector;   
  
public class Demo7_3 {   
  
    /**  
     * @param args  
     */  
    public static void main(String[] args) {   
        //LinkedList的用法   
        LinkedList ll=new LinkedList();   
        Emp emp1=new Emp("sa01","宋江",1.2f);   
        Emp emp2=new Emp("sa02","卢俊义",1.8f);   
        Emp emp3=new Emp("sa03","吴用",1.5f);   
        //表示把emp1加在链表的最前面   
        ll.addFirst(emp1);//向链表的当前结点的前面添加一个emp1结点   
        ll.addFirst(emp2);//前加   
        ll.addLast(emp3);//后加   
        for(int i=0;i<ll.size();i++)   
        {   
            System.out.println(((Emp)ll.get(i)).getName());   
        }   
        //------------------------------------------------------   
        //Vector的用法   
        //Vector与ArrayList的区别   
        //1.Vector有同步机制,ArrayList没有同步机制    
        //2.ArrayList缺省情况下自动增长原来的一倍,Vector是原来的50%增长   
        Vector vv=new Vector();   
        Emp emp4=new Emp("1","林冲",1.6f);   
        vv.add(emp4);   
        for(int i=0;i<vv.size();i++)   
        {   
            Emp emp=(Emp)vv.get(i);   
            System.out.println(emp.getName());   
        }   
        //------------------------------------------------------   
        //栈的用法   
        Stack stack=new Stack();   
        Emp emp5=new Emp("8","李逵",1.9f);   
        Emp emp6=new Emp("9","武松",1.7f);   
        Emp emp7=new Emp("5","公孙胜",1.7f);   
        stack.add(emp5);   
        stack.add(emp6);   
        stack.add(emp7);   
        for(int i=0;i<stack.size();i++)   
        {   
            Emp emp=(Emp)stack.get(i);   
            System.out.println(emp.getName());   
        }   
        //------------------------------------------------------   
        //HashMap的用法   
        //创建一个HashMap对象   
        HashMap hm=new HashMap();   
        Emp emp8=new Emp("s001","秦平",2.2f);   
        Emp emp9=new Emp("s002","花荣",2.3f);   
        Emp emp10=new Emp("s002","燕青",2.4f);   
        //将emp放入到   
        hm.put("s001", emp8);   
        hm.put("s002", emp9);   
        hm.put("s002", emp10);//出现键值相同时,会将emp10替换前面的   
        System.out.println(emp8.getName());   
        System.out.println(emp9.getName());   
           
        //如果要查找编号是s002   
        if(hm.containsKey("s002"))   
        {   
            System.out.println("-----------\n有该员工");   
            //如何取出,键<-->值   
            Emp emp=(Emp)hm.get("s002");   
            System.out.println("名字:"+emp.getName());   
        }   
        else  
        {   
            System.out.println("-----------\n没有该员工");   
        }   
           
        //遍历HashMap中所有的key和value   
        Iterator it=hm.keySet().iterator();//迭代器   
        //hasNext返回一个boolean   
        System.out.println("-------开始遍历HashMap!------");   
        while(it.hasNext())//hasNext判断是否还有下一个   
        {   
            //取出Key   
            String key=it.next().toString();   
            //通过Key取出value   
            Emp emp=(Emp)hm.get(key);   
            System.out.println("名字:"+emp.getName());   
        }   
        //HashMap在多线程并发操作时,因为没有同步机制作,   
        //可能会发生读脏数据,所以引入了安全的Hashtable   
        //------------------------------------------------------   
        //Hashtable的用法   
        Hashtable ht=new Hashtable();   
        /*  
        ht.put(null, null);  
        System.out.println("Hashtable null值测试"+ht.get(null));  
        //Hashtable不可以存放空值  
        */  
        HashMap hm2=new HashMap();   
        hm2.put(null, null);//HashMap可以存放空值   
        System.out.println("HashMap null值测试:"+hm2.get(null));   
        //Hashtable不可以存放空值   
           
        /*  
         * 集合总结:  
         * 1.如果要求线程安全,使用Vector,Hashtable  
         * 2.如果要求线程安全,使用ArrayList,LinkedList,HashMap  
         * 3.如果要求键值对,则使用HashMap,Hashtable  
         * 4.如果数据量很大,又要线程安全考虑Vector  
         */  
    }   
}

Class7 / com.test1 / Test1.java:

/*  
 * 功能:位运算和移位运算  
 */  
  
package com.test1;   
  
public class Test1 {   
  
    /**  
     * @param args  
     */  
    public static void main(String[] args) {   
        System.out.println("~2="+(~2));//取反   
        System.out.println("2&3="+(2&3));//与   
        System.out.println("2|3="+(2|3));//或   
        System.out.println("~-5="+(~-5));//取反   
        System.out.println("-3^3="+(-3^3));//异或   
  
        //算术右移:低位溢出,符号位不变,并用符号位补溢出的高位   
        //算术左移:符号位不变,低位补0   
        //逻辑右移:低位溢出,高位补零   
        System.out.println("1>>2="+(1>>2));   
        System.out.println("-1>>2="+(-1>>2));   
        System.out.println("1<<2="+(1<<2));   
        System.out.println("-1<<2="+(-1<<2));   
        System.out.println("3>>>2="+(3>>>2));//逻辑右移   
    }   
}

版权所有,转载请注明出处 luowei.github.io.