问题如下:设有A1、A2两个类,其中均含有属性:java.util.Date time;A1中含有若干个属性a1…an,A2中含有若干个属性b1…bm,现在有A1的若干个实例 ,A2的若干个实例。现在按照time属性进行排序,依次输出A和B的所有实例。
我的设想是先创建一个公共父类,其中含有time属性,并且实现comparable接口。
//公共父类
class A implements Comparable<A> {
private Date date;
@Override
public String toString() {
return "A [date=" + date + "]";
}
public A(Date date) {
super();
this.date = date;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public int compareTo(A o) {
// TODO Auto-generated method stub
long i = this.getDate().getTime() - o.getDate().getTime();
if (i == 0) {
return 0;
} else if (i > 0) {
return 1;
} else {
return -1;
}
}
}
子类A1继承A类,并增添其余的属性:
//类A1
class A1 extends A {
public A1(Date date, char a1) {
super(date);
A1 = a1;
}
private char A1;
public char getA1() {
return A1;
}
public void setA1(char a1) {
A1 = a1;
}
@Override
public String toString() {
return "A1 [A1=" + A1 + "]";
}
}
子类A2同理继承A类:
//类A2
class A2 extends A {
public A2(Date date, String a2) {
super(date);
A2 = a2;
}
@Override
public String toString() {
return "A2 [A2=" + A2 + "]";
}
public String getA2() {
return A2;
}
public void setA2(String a2) {
A2 = a2;
}
private String A2;
}
再写一个测试类实现需求:
public class Test1 {
@Test
public void es() {
List<A> aa = new LinkedList<A>();//用于存放A1类对象
List<A> bb = new LinkedList<A>();//用于存放A2类对象
aa.add(new A1(new Date(1111), 'a'));
aa.add(new A1(new Date(3333), 'b'));
aa.add(new A1(new Date(5555), 'c'));
aa.add(new A1(new Date(7777), 'd'));
bb.add(new A2(new Date(2222), "A"));
bb.add(new A2(new Date(4444), "B"));
bb.add(new A2(new Date(6666), "C"));
bb.add(new A2(new Date(8888), "D"));
List<A> ALL = new LinkedList<>();//用于存放所有的对象
ALL.addAll(aa);//添加对象
ALL.addAll(bb);
for (int i = 0; i < ALL.size(); i++) {//遍历
//倘若对象为A1,则强转为A1,并进行打印。
if (ALL.get(i) instanceof A1) {
A1 a12 = (A1) ALL.get(i);
System.out.print(a12.getA1());
} else {//倘若对象为A2,则强转为A2,并进行打印。
A2 a12 = (A2) ALL.get(i);
System.out.print(a12.getA2());
}
}
System.out.println();
System.out.println("-------------------");
Collections.sort(ALL);
for (int i = 0; i < ALL.size(); i++) {
if (ALL.get(i) instanceof A1) {
A1 a12 = (A1) ALL.get(i);
System.out.print(a12.getA1());
} else {
A2 a12 = (A2) ALL.get(i);
System.out.print(a12.getA2());
}
}
}
}
运行结果:
abcdABCD
-------------------
aAbBcCdD