簡體   English   中英

關於arraylist java的程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM