나는 iterating 후 Map of String and List<String>
을 만들 수있는 객체 목록을 반복하려고합니다.개체의 목록을 반복하여 새지도를 만드는 방법은 무엇입니까?
다음은 dataCenter, hostName 및 hostId가있는 내 Machine 클래스입니다. 당신이 내 아래 코드를 볼 경우
public class Machine {
private String dataCenter;
private String hostName;
private String hostId;
// getters here
public Machine(String dataCenter, String hostName, String hostId) {
// some code here
}
}
, 나는 내가 6 컴퓨터 개체를 보유하고있는 machines
의 목록이있다. 그런 다음 machines
개체를 반복하여 새지도를 만듭니다.
DC1 - hostA,hostB
DC2 - hostC,hostD
DC3 - hostE,hostF
다음
DC1
새로운지도의 핵심이며, hostA,hostB
그지도에 대한 문자열 값의 목록입니다 -
Map<String, List<String>> holder = new LinkedHashMap<String, List<String>>();
List<Machine> machines = new ArrayList<Machine>();
Machine machine1 = new Machine("DC1", "machineA", "hostA");
Machine machine2 = new Machine("DC1", "machineB", "hostB");
Machine machine3 = new Machine("DC2", "machineC", "hostC");
Machine machine4 = new Machine("DC2", "machineD", "hostD");
Machine machine5 = new Machine("DC3", "machineE", "hostE");
Machine machine6 = new Machine("DC3", "machineF", "hostF");
machines.add(machine1);
machines.add(machine2);
machines.add(machine3);
machines.add(machine4);
machines.add(machine5);
machines.add(machine6);
// some other code here
// iterate machines object
for (Machine machine : machines) {
LinkedList<String> ppMachine = new LinkedList<String>();
// below code doesn't work as it shows only last machine for that Datacenter
ppMachine.add(machine.getHostId());
holder.put(machine.getDatacenter(), ppMachine);
}
System.out.println(holder);
새로운 맵은 다음과 같이해야한다. 다른 사람들도 마찬가지입니다.
하지만 내 보유자지도에는 항상 데이터 센터의 모든 컴퓨터가 아닌 해당 데이터 센터의 최신 가치가 표시됩니다.
나는 어리석은 실수를하고 있습니다.
아하 .. 감사합니다 루이 .. 어떻게 이것을 피할 수 있습니까? 이견있는 사람? – AKIWEB
@AKIWEB :'add (..)'? – Brian