1.利用多线程编写程序:用程序模拟铁路售票系统,实现通过四个售票点发售某日某次列车的100张车票,按模板要求,将[代码1]~[代码9]替换为相应的Java程序代码,某次运行结果部分窗口售票情况行如图:

java售票系统 条状统计图怎么实现_泛型

思路:Runnable接口只有一个方法run(),用户可以声明一个类实现Runnable接口,并定义run()方法,run()方法访问的是同一个对象中的变量,将线程代码写入其中,就完成了这一部分的任务。但是Runnable接口对线程的支持,还必须创建Thread类的实例,这一点通过Thread类的构造方法来实现,每次运行结果都不同,四个窗口同时售100张票。

下面展示一些 内联代码片

public class sale {
	public static void main(String[] args) {
		SaleTickets t= new SaleTickets();
		Thread t1=new Thread(t,"第一售票窗口"); //创建Thread的对象t1,传入相应参数
		Thread t2=new Thread(t,"第二售票窗口");    //创建Thread的对象t2,传入相应参数
		Thread t3=new Thread(t,"第三售票窗口");      //创建Thread的对象t3,传入相应参数
		Thread t4=new Thread(t,"第四售票窗口");      //创建Thread的对象t4,传入相应参数
		t1.start();       //调用对象t1的start()方法,启用线程t1
		t2.start();     //调用对象t2的start()方法,启用线程t1
		t3.start();       //调用对象t3的start()方法,启用线程t1
		t4.start();       //调用对象t4的start()方法,启用线程t1
		}
}
class SaleTickets implements Runnable   //由Runnable接口实现类 9
{
	private int tickets = 1;
	public void run()
	{
		while(true)
		{
			if(tickets<=100)
				System.out.println(Thread.currentThread().getName() + "销售第" + tickets++ + "票");
				else
				break;
			}
		}
	}

2.创建两个集合{“lily”, “tom”, “John”, “Kevin”}和{“George”, “Rose”, “tom”, “Helena”},求它们的并、交和差。

java售票系统 条状统计图怎么实现_List_02

下面展示一些 内联代码片

import java.util.*;
public class jihe {
	public static void main(String[] args) {
		 ArrayList<String> list1=new ArrayList<String>();
         ArrayList<String> list2=new ArrayList<String>();
         //ArrayList<String> list3=new ArrayList<String>();
         list1.add("lily");
         list1.add("tom");
         list1.add("John");
         list1.add("Kevin");
         list2.add("George");
         list2.add("Rose");
         list2.add("tom");
         list2.add("Helena");
         System.out.println("list1和list2的交集");
         System.out.println(intersection(list1, list2));
         System.out.println("list1-list2的差集");
         System.out.println(subtract(list1, list2));
         System.out.println("list1和list2的并集");    
         System.out.println(union(list1, list2));
  }
	public static List<String> intersection( List<String> list1,List<String> list2){
		ArrayList<String> list3=new ArrayList<String>(list1);
		//List<String> list3=new ArrayList<String>(list1);
        list3.retainAll(list2);
                return  list3;
	}        
         public static List<String> subtract(List<String> list1,List<String> list2){
        	 ArrayList<String> list3=new ArrayList<String>(list1);
        	 list3.removeAll(list2);
        	 return list3;
        	       }
         public static List<String> union(List<String> list1,List<String> list2){
             ArrayList<String> list3=new ArrayList<String>(list1);
             list3.addAll(subtract(list2, list1));
             return list3;
         
}

	}

3.使用hashmap建立一周七天的数字和英文映射,数字(1–7)作为键,英文作为值。例如键1的映射的值为Monday。通过entrySet方法返回的集合视图修改散列映射元素的值。结果如下图:

java售票系统 条状统计图怎么实现_泛型_03

import java.util.Map.Entry;
import java.util.*;
public class abb {
	public static void main(String[] args) {
		HashMap<Integer,String> hm=new HashMap<Integer,String>();
	       hm.put(1,"Monday");
	       hm.put(2,"Tuesday");
	       hm.put(3,"Wednesday");
	       hm.put(4,"Thusday");
	       hm.put(5,"Friday");
	       hm.put(6,"Saturday");
	       hm.put(7,"Sunday");
	       System.out.println("使用Keyset方法完成输出:");
	       Set<Integer> set1=hm.keySet();
	       Iterator<Integer> it=set1.iterator();
	       while(it.hasNext()){
	       int y =it.next();
	       System.out.print("\t"+y+": "+hm.get(y));
	 }
	       System.out.println();
	       System.out.println("使用entryset方法完成输出:");
	       Set<Map.Entry<Integer, String>> maps=hm.entrySet();
	      //Set maps=hm.entrySet();//获得散列映射的映射集
	       Iterator<Map.Entry<Integer, String>> it2=maps.iterator();
	       //Iterator it2=maps.iterator();
	      while(it2.hasNext()){
	       Entry<Integer, String>  x=it2.next();
	    		System.out.print("\t"+x.getKey()+": "+x.getValue());
	    } 
	      System.out.println();
	      System.out.println("使用entryset方法输出修改后的结果:");
	      hm.clear();
	      String hm1[]= {"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
	      
	     // Iterator<Entry<Integer, String>> it3=maps.iterator();    
      for(int i=1;i<8;i++)  {
	      //hm.replace(i,hm1[i-1]);
    	  hm.put(i,hm1[i-1]);
    	  //System.out.print("\t"+i+": "+hm1[i-1]);
      }
      Iterator<Entry<Integer, String>> it3=maps.iterator();     
        while(it3.hasNext()){
	       Entry<Integer, String>  z=it3.next();
	    		System.out.print("\t"+z.getKey()+": "+z.getValue());
	    } 
	}

}

4.编写一个Java程序,定义泛型类和泛型类的方法,然后创建一个泛型类对象,调用泛型类对象输出相应的结果,使程序运行结果如下图所示:

java售票系统 条状统计图怎么实现_List_04

public class ArrayClass<T> {
	  private T[] array;   	                  //定义私有泛型数组array
	public void setT(T array[]) {   //定义参数为类型形参的数组array
		this.array = array;
	}
  	public T[] getT() {
		return array;
	}
	public static void main(String[] args) {
		ArrayClass<String> a=new ArrayClass<String>();                 //定义类型实参为String型的泛型对象a
		String[] beauty={"西施","王昭君","貂蝉","杨贵妃"};
		a.setT(beauty);
		for(int i=0;i<a.getT().length;i++){
		System.out.print(a.getT()[i]+"  ");                //调用getT()方法返回数组中的值并输出
		}
	}
}