簡體   English   中英

自定義對象的數組列表

[英]Arraylist of Custom Object

這是一個非常簡單的問題,但是我是一個初學者,而且我已經在這部分上停留了幾個小時。 我不是在尋找簡單的出路,而是想了解我的代碼正在發生什么以及為什么它不起作用。 我的問題是:

創建一個具有隨機數和當前時間的節點類。 創建一個存儲類並將這些節點存儲在列表/數組中。 使用主類創建50個節點並顯示。

當我運行50次並獲得列表時,我將列表打印出來了,以便可以檢查我的代碼是否正在運行,並且它們都具有相同的時間。 這意味着不同的節點不會存儲在我的列表中,而是在每次循環運行時被清除。 這是為什么?

我的代碼附在:

主要:

public class NodeSort {

public static void main(String[] args) 
{
    int c = 0;
    while (c < 50)
    {
        Storage.add();
        c++; 
    }


}

}

節點:

public class Node
{
public static int num;
public static long time;

public Node()
{
    num = Random.getNum();
    time = System.nanoTime();
}

public static long getTime()
{
    return time;
}

public static int getNum()
{
    return num;
}
}

存儲:

public class Storage 
{
public static ArrayList<Node> list = new ArrayList<>();

public static void add()
{

    list.add(new Node());

}

當我確實有x = 1-50的時間時,它會同時打印50次而不是50次。

它們都具有相同的time值,因為它們幾乎都是在同一時間創建的。 System.nanoTime()不能保證您會真正獲得納秒級的精度,這取決於操作系統識別時間的能力。 大多數操作系統只能提供毫秒級的分辨率。 因此,如果所有調用都在同一毫秒內發生,則您將獲得相同的值。

至於隨機數,我不知道-什么是Random類? 不是java.util.Random

編輯:哦,等等,我明白了。 您在Node類中將numtime聲明為static 這意味着每個副本只有一個副本。 只需從這些聲明以及返回值的方法中刪除static

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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