【发布时间】:2016-10-20 21:23:17
【问题描述】:
好的,所以我即将进行一项小型实验室测试,这个主题对我来说非常难。我设法从已经接受过它的人那里获得了一个示例主题,但我在解决它时遇到了问题。题目如下:
创建类 Apartment(int nr, Stringorientation) 并拥有一个继承自类 Apartment 的 LuxuryApartment 类,并且还有一个 Float 类型的属性表面。
我想这很简单,这里没有问题。
创建扩展类 LinkedList 的 MyLinkedList 类,以便您可以在其中存储 Apartment 类型的对象。添加一个名为 sortByOrientation() 的方法,该方法将使用定义为普通内部类的比较器按公寓的方向按字母顺序对公寓进行排序。
这是我遇到一些麻烦的地方。我可以创建我的 MyLinkedList 类,但我不明白 sortByOrientation() 方法应该是什么样子。
创建一个初始化 MyLinkedList 的测试程序。添加 3 套公寓和 3 套 LuxuryApartments。打印列表,使用 sortByOrientation() 方法对列表进行排序,然后使用迭代器打印列表。
如果他们之前说我应该上课以便我只能存储公寓,我该如何将 LuxuryApartments 添加到 MyLinkedList?
将不豪华的公寓移动到链接列表中,将豪华公寓移动到链接列表中。创建一个列出公寓和豪华公寓的方法。
我想这并不难,但他们所说的移动是什么意思?我是否从上述 MyLinkedList 中获取我的公寓?
有人可以给我一些关于这个练习的建议吗?我真的迷路了。对不起,如果我的问题是愚蠢的/不尊重准则/等。但我真的不知道如何进行这个练习。
Apartment 类 - 我不确定它是否需要实现 Comparable 接口,正如我所说,我现在对 Java 很不好
public class Apartament implements Comparable<Apartament>{
private int nr;
private String orientare;
public int getNr() {
return nr;
}
public void setNr(int nr) {
this.nr = nr;
}
public String getOrientare() {
return orientare;
}
public void setOrientare(String orientare) {
this.orientare = orientare;
}
public Apartament(int nr, String orientare){
this.nr=nr;
this.orientare=orientare;
}
public int compareTo(Apartament ap){
return ap.orientare.compareTo(this.orientare);
}
}
我的 LuxuryApartment 类继承自我的 Apartment 类
public class ApartamentLux extends Apartament{
private float suprafata;
public float getSuprafata() {
return suprafata;
}
public void setSuprafata(float suprafata) {
this.suprafata = suprafata;
}
public ApartamentLux(int n, String o, float suprafata){
super(n,o);
this.suprafata=suprafata;
}
}
这是我真正迷失的地方,似乎无法让它发挥作用。
import java.text.Collator;
import java.util.Comparator;
import java.util.LinkedList;
public class MyLinkedList extends LinkedList<Apartament>{
public MyLinkedList(){
super();
}
private static class OrComp implements Comparator<String>{
public int compare(String s1, String s2){
if(s1.compareTo(s2)<0)
return 1;
else return 0;
}
public void sortByOrientare(OrComp list){
list.sort(new Comparator<String>(){
@Override
public int compare(String s1, String s2){
return Collator.getInstance().compare(s1, s2);
}
});
}
}
}
}
【问题讨论】:
-
@nhouser9 这不是家庭作业,不过我要补充一下我现在解决它的糟糕尝试
-
关于第3点。如果您了解继承,那么LuxuryApartment就是一种Apartment。您的列表可以包含一个公寓和任何从公寓延伸出来的东西。
-
OrComp 是多余且不完整的。 sortByOrientare 方法不应接受参数,而应简单地使用
Comparator<Apartment>调用this.sort(),将a.getOrientare()与b.getOrientare()进行比较
标签: java collections linked-list