[英]program on arraylist java
System.out.println("Enter the appointment ID to see the full details :");
int y=in.nextInt();
int r;
for(r=0;r<count;r++)
{
if(all.get(r).getID()==y)
{
all.get(r).display();
}
}
我正在使用此代碼檢索使用get語句和顯示函數輸入的完整詳細信息。 這只是我計划的一小部分。 我想知道有沒有其他方法可以做到這一點
更好的方法是使用HashMap<Integer,DetailsClass>
而不是ArrayList。
然后,你只需寫一下,而不是一個循環:
HashMap<Integer,DetailsClass> map = new HashMap<>();
...
if (map.containsKey(y)) {
DetailsClass details = map.get(y);
details.display();
}
這使代碼更簡單,更有效,因為在HashMap中搜索鍵需要預期的恆定時間,而搜索List需要線性時間。
如果必須使用ArrayList
,至少在找到要查找的對象后離開循環:
int y=in.nextInt();
for(int r=0;r<count;r++)
{
if(all.get(r).getID()==y)
{
all.get(r).display();
return; // or break; depending on where this for loop is located
}
}
永遠不要通過索引循環List
。 您不知道List
的內部實現是什么,循環可能導致O(n^2)
復雜性。
我建議如下:
System.out.println("Enter the appointment ID to see the full details :");
final int y = in.nextInt();
for(final Thing thing : all) {
if(thing.getID() == y) {
thing.display();
}
}
或者,如果您可以使用Java 8,那么:
all.stream()
.filter(t -> t.getID() == y)
.findFirst()
.ifPresent(Thing::display);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.