I have a set with String and i want to create hash map with String key and Node Object value. and this is my code
Set<String> cities = new HashSet<>();
Map<String, Node> allCity = new HashMap<>();
Iterator<String> c = cities.iterator();
while(c.hasNext()){
                String name = c.next();
                Node cit = new Node(name);
                allCity.put(name, cit);
            }
my problem is when i read first from c iterator and correctly make new object and put it to hash map but when second object was create in my hash map the previous object value was change like this
first read key = "New York" Value = Node (and the value of node is New York)
second read Key = "Los Angles" Value = Node (and the value of node is Los Angles) and my first read Value with New York key was change to Los Angles.
myNode class
public class Node{
private static String city;
private static double pathCost;
private ArrayList<Edge> neighbours;
private Node parent;
public Node(String cityName){
    city = cityName;
    neighbours = new ArrayList<>();
}
public static String getValue() {
    return city;
}
public static void setValue(String city) {
    Node.city = city;
}
public static double getPathCost() {
    return pathCost;
}
public static void setPathCost(double pathCost) {
    Node.pathCost = pathCost;
}
public static String getCity() {
    return city;
}
public static void setCity(String city) {
    Node.city = city;
}
public ArrayList<Edge> getNeighbours() {
    return neighbours;
}
public  void setNeighbours(ArrayList<Edge> neighbours) {
    this.neighbours = neighbours;
}
public void addNeighbours(Edge n){
    this.neighbours.add(n);
}
public Node getParent() {
    return parent;
}
public void setParent(Node parent) {
    this.parent = parent;
}
@Override
public String toString() {
    return city;
}
}
Please help me.
for (String name : cities) allCity.put(name, new Node(name));