![](/img/trans.png)
[英]i am trying to use getParameterName().but exception is raising.please tell me the correct way if i am doing in wrong way
[英]I am trying to create a circular LinkedList Please tell me if its a correct way to do it
我已經實現了邏輯,例如如果我給出的索引還不存在,它將改變索引的提示(就像旋轉,我猜)。
import java.util.LinkedList;
public class MycircularlinkedList extends LinkedList {
private static int count = 0;
public Object get(int i) {
System.out.println("count==" + count);
if (i > count) {
i = i % count;
return super.get(i);
} else {
return super.get(i);
}
}
public boolean add(Object o) {
super.add(o);
count++;
return true;
}
public void add(int i, Object o) {
if (i > count)
i = i % count;
super.add(i, o);
count++;
}
}
我可以看到幾點:
count
是靜態的,這意味着您在這里只會有一個數字。 可能不是您想要的 count
是多余的,請使用Collection#size()
%
)的偉大之處在於它適用於所有數字,您不需要有條件的。 2 % 12 == 14 % 12 == -10 % 12
count
屬性,則可以擺脫被覆蓋的#add(Object o)
邏輯,而只是return super.add(o);
我發現您的代碼存在一些問題:如果count == 0並且如果我使用方法add(7,obj),則7%0將引發ArithmeticException.count應該聲明為private,因為您可能有兩個類實例。另外,您還需要檢查poll \\ offerLast方法是否滿足您的需求,因為您不能限制任何客戶端代碼來避免使用它們。最后,需要重寫clone \\ readObject \\ writeObject才能包含count變量。
你近了
(1)術語“ 循環鏈表 ”是眾所周知的,是指尾巴鏈接回頭的列表(反之亦然,如果它是雙鏈表)。 您的檔案更像是儲存在鏈表中的“圓形緩沖區”。 我們可以稱其為LinkedListCircularBuffer
東西。
(2)該類應通過元素類型進行參數化,因此
public class LinkedListCircularBuffer<E> extends LinkedList<E> {
@Override
public E get(int i) {
return super.get(i % size()); // simpler and faster without an "if"
}
}
(3)您可以調用size()
而不是所有代碼來維護另一個count
。
(4)您的add(int i, Object o)
方法不支持i == size()
,但是您可以通過完全不覆蓋add()
來解決此問題。
(5)重寫的方法需要@Override
注釋。
(6) 始終在每個“ then”和“ else”子句周圍使用花括號是一種很好的樣式。 像這樣的代碼
if (i > count)
i = i % count;
是脆弱的,例如,在“ then”子句中添加println()
語句將破壞它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.