これは、LinkedListを拡張するクラスです。addtopqを使用して優先度付きキューシステムを作成しています。ここで、キューの最初の要素は文字列で、2番目はその文字列に関連する優先度です。例外を無視する
class PQ extends LinkedList {
public void addtopq(String s, Integer p){
if (p<1 || p>20) throw new InvalidPrioty("Priority number must be between 1 and 20");
int pos = 0;
int k = 0;
int i = 1;
int j = 0;
LinkedList nlist = new LinkedList();
if (this==null){
addLast(s);
addLast(p);
System.out.println(this);
}
}
else {
while (i<size()){
int x = Integer.valueOf(get(i).toString());
if (p > x) pos = 1;
else if (p==x){
pos = 0;
break;
}
else if (p < x) {
pos = -1;
break;
}
}
if (pos==1){
addLast(s);
addLast(p);
}
if (pos==-1||pos==0){
for (k=0; k<(i-1); k++) nlist.add(j, get(j));
nlist.addLast(s);
nlist.addLast(p);
for (k=k+1 ; k<size(); k++) nlist.add(get(k));
}
}
}
}
2つの新しいオブジェクトをリストに追加することを拒否するメインファイルは次のとおりです。
public class Main {
public static void main(String[] args) {
PQ list = new PQ();
list.addtopq("first", 1);
System.out.println(list);
}
希望する[first、1]ではなく[]が出力に表示されます。PQクラスにコンストラクターを作成する必要がありますか?