2016-10-10 14 views
1

私はカスタムリストを作成し、2つの要素をリストに追加しました。 これらの2つの要素を表示しようとすると、最後に追加された要素が2回だけ表示されます。私はJavaの初心者です、私はなぜ私のリストは重複して最後に追加された項目だけを含む見つけることができます!カスタムリストは最後に追加された要素を複製します

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

public class Home { 

public static void main(String[] args) { 
    int length = 2; 
    String[] machineName = { "BMW", "AUDI" }; 

    for (int i=0; i<length; i++){ 
     setMachineDetails(machineName[i]); 
     System.out.println("Machine Details No. : " + i + " SET"); 
    } 

    System.out.println("\n\nDisplaying List contents\n\n"); 

    System.out.println("Size of List : " + MachineDetails_List.serverData.size() + "\n\n"); 

    for (MachineDetails model : MachineDetails_List.serverData){ 
     System.out.println("MachineDetails Name : " + model.getMachineName()); 
    } 
} 

private static void setMachineDetails(String name) { 

    MachineDetails md = new MachineDetails(); 
    md.setMachineName(name); 
    MachineDetails_List.serverData.add(md); 
    System.out.println("Machine Name : " + name + " SET"); 
} 
} 

class MachineDetails { 
    public static String MACHINE_NAME; 

    public static String getMachineName() { 
     return MACHINE_NAME; 
    } 

    public static void setMachineName(String machineName) { 
     MACHINE_NAME = machineName; 
    } 
} 

class MachineDetails_List { 

    public static List<MachineDetails> serverData = new ArrayList<MachineDetails>(); 

    public static List<MachineDetails> getServerData() { 
     return serverData; 
    } 

    public static void setServerData(List<MachineDetails> serverData) { 
    MachineDetails_List.serverData = serverData; 
    } 
} 

答えて

2

MACHINE_NAMEstaticである必要はありません。フィールドは静的なので、MachineDetailsオブジェクトのMACHINE_NAMEはすべて同じ値を持ちます。

MachineDetailsクラスからstaticキーワードを削除します。

class MachineDetails { 

    public String MACHINE_NAME; 

    public String getMachineName() { 
     return MACHINE_NAME; 
    } 

    public void setMachineName(String machineName) { 
     MACHINE_NAME = machineName; 
    } 
} 
+0

あなたがおかしくなり天才です – Sebastian

0
You should make list,variable to be non static. 

public List<MachineDetails> serverData = new ArrayList<MachineDetails>(); 

class MachineDetails { 

    public String MACHINE_NAME; 

    public String getMachineName() { 
     return MACHINE_NAME; 
    } 

    public void setMachineName(String machineName) { 
     MACHINE_NAME = machineName; 
    } 
} 
関連する問題