2016-04-04 17 views
0

Elde etmeye çalıştığım şey, bir nesnenin değerini yalnızca kimliğiyle bilinmesidir. Nesneyi karşılık gelen bir kimlikle nasıl alabilirim, böylece bir özelliği güncelleyebilir miyim? Bu soruyu ağaçları ile basit bir örnek kullanarak daha genel yapmaya çalıştım. Umarım bu, proje kodumu buraya yapıştırmaktan daha problemi çözecektir.

sınıf ormanGet java nesnesine göre

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"); 
    } 
} 

sınıf ağaç

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

Çok yol vardır: 'Harita 'tuşunu basılı tutun ve' ağaç 'nesnesini kimliğe göre bulun. 'Ağaçta' .equals() 'yöntemini uygulayın ve' Set''e yerleştirin; Adına bakarak tüm ağaç nesnelerinin üzerinde yineleyin. Gereksinimler daha iyi bir cevabı yönlendirecek ('orman' ağacına 'düzenlenmiş). – KevinO

+0

Koleksiyonunuzda yineleyin ve değişikliklerinizi yapın. –

+0

Sınıf adları genellikle büyük harfle yazılır. – ifly6

cevap

1

Kullanım HashMap nesneleri tutmak için. Ardından, nesneyi verilen kimlikle almak için get yöntemini kullanın.

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

Teşekkürler! Önceki düzenlemeniz de çok hirdeydi. Bu cevabı 2 dakikada kabul ediyorum (stackoverflow limit me) – yoano

İlgili konular