- 采用实现java.lang.Runnable接口方式设计并实现模拟车票购买线程类TicketBooking,满足:
- 车票数量ticketNumber初始为100,购买者姓名name,分别为int和String类型
- 线程目标主体每间隔1000毫秒购买一次车票,并且将原来票数量做相应递减,输出购买者信息和购买车票数量和剩余车票数量信息。
代码如下
class TickerBooking implements Runnable
{
private int ticketNumber = 100;
private String name;
public TickerBooking(String name) {
this.name = name;
}
@Override
public void run() {
for (int i = 0;i<100;i++)
{
if (ticketNumber > 0)
{
System.out.println("name:"+this.name+","+"ticket left:"+this.ticketNumber--);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
public class t2_5 {
public static void main(String[] args) throws Exception
{
TickerBooking tk = new TickerBooking("Steve");
new Thread(tk).start();
}
}
运行结果:
name:Steve,ticket left:100
name:Steve,ticket left:99
name:Steve,ticket left:98
...
name:Steve,ticket left:0
- 设计一个Student类,满足:
- 成员变量为id和name,分别为int和String类型,访问权限为private
- 有参数构造方法
- 成员变量的getter类方法
- 重写从Object类继承的两个三个方法
a) boolean equals(Object obj),两个Student对象equals就是其id相等
b) int hashcode(),一个Student对象的hashcode就是其id
c) String toString(),使得返回的对象信息为id:name形式。
设计一个用于指定Student对象之间排序方法的StudentComparator类,满足: - 实现java.util.Comparator接口
- 使得两个Student对象比较时,其方法int compare(Student s1,Student s2)
a) 两个对象id相等时,返回0
b) s1的id大于s2的id,返回-1
c) s1 的id小于s2的id,返回1
设计一个演示类TreeSetDemo类,满足: - 主方法内构造一个用于存Student对象的TreeSet集合,其上对象元素的排序方法按照Comparator接口指定的排序方法排序,分别存Student对象(1,“张1”)、(2,“李4”)、(3,“王5”)、(3,“赵6”)
- 将集合元素输出
- 对程序结果予以必要的解释。
import java.util.Comparator;
import java.util.TreeSet;
class Student2_6
{
private String name;
private int id;
public Student2_6(String name, int id)
{
this.name = name;
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public boolean equals(Student2_6 obj)
{
return obj.getId() == this.getId();
}
public int hashcode()
{
return this.id;
}
@Override
public String toString() {//重写toString
return "(" + this.name + ',' + this.id + ')';
}
}
public class t2_6 //TreeSetDemo
{
public static void main(String[] args)
{
TreeSet<Student2_6> ts = new TreeSet<>(new Comparator<Student2_6>() {
@Override
public int compare(Student2_6 o,Student2_6 p)
{//重写compareTo
return Integer.compare(p.getId(), o.getId());
}
});
ts.add(new Student2_6("张1",1));
ts.add(new Student2_6("李4",2));
ts.add(new Student2_6("王5",3));
ts.add(new Student2_6("赵6",3));
System.out.println(ts);
}
}
运行结果:
[(王5,3), (李4,2), (张1,1)]