1.利用多线程编写程序:用程序模拟铁路售票系统,实现通过四个售票点发售某日某次列车的100张车票,按模板要求,将[代码1]~[代码9]替换为相应的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”},求它们的并、交和差。
下面展示一些 内联代码片
。
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方法返回的集合视图修改散列映射元素的值。结果如下图:
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程序,定义泛型类和泛型类的方法,然后创建一个泛型类对象,调用泛型类对象输出相应的结果,使程序运行结果如下图所示:
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()方法返回数组中的值并输出
}
}
}