2016-04-04 4 views
0

То, что я пытаюсь достичь, - это обновить значение объекта только с его идентификатором. Как я могу получить объект с соответствующим идентификатором, чтобы я мог обновить свойство? Я попытался сделать этот вопрос более общим, используя простой пример с деревьями. Надеюсь, это сделает проблему более ясной, чем просто вставка кода проекта здесь.

класс лесПолучить объект java по id

public class forest { 
    public forestName; 

    public forest(String forestName){ 
     this.forestName=forestName; 
    } 
    updateTreeName(int id, String Name){ 
     // Here I need to update the name of the tree with that specific ID 
    } 

    public static void main(String[] args) { 
     forest greenforest = new forest(); 
     // create some tree's in the greenforest. 
     greenforest.updateTreeName(4, "red leafe"); 
    } 
} 

класс дерево

public class tree { 
    public String treeName; 
    public int id; 
    public tree(int id, String treeName){ 
     this.treeName=treeName; 
     this.id=id; 
    } 
} 
+2

Существует множество способов: сохранить «Карта » и найти «дерево» по идентификатору. Внедрите метод '.equals()' на 'tree' и поместите его в' Set'; итерации по всем объектам 'tree', смотрящим на имя. Требования приведут к лучшему ответу (отредактированы 'forest' на' tree'). – KevinO

+0

Вы перебираете свою коллекцию и вносите свои изменения. –

+0

Имена классов обычно заглавные. – ifly6

ответ

1

Используйте HashMap сохранить объекты. Затем используйте метод get для получения объекта с данным идентификатором.

public class Forest { 
    public String forestName; 

    HashMap<Integer, Tree> trees = new HashMap<>(); 

    public Forest(String forestName){ 
     this.forestName=forestName; 

     //initialize trees 
     trees.put(4, new Tree(4, "redleaef")); 
    } 

    public void updateTreeName(int id, String Name){ 
     trees.get(id).treeName = Name; 
    } 

    public static void main(String[] args) { 
     Forest greenforest = new Forest("name"); 
     // create some tree's in the greenforest. 
     greenforest.updateTreeName(4, "red leafe"); 
    } 
} 
+0

Спасибо! Ваше предыдущее редактирование было очень тяжело. Я приму этот ответ за 2 минуты (stackoverflow limit me) – yoano

Смежные вопросы