在类中实现嵌套树图

时间:2015-09-15 14:49:22

标签: java tree

我需要在类中创建3个嵌套的Tree映射。换句话说,实现具有明确命名的自己的类,并且这些类在内部使用其他自定义类的Map(再次包含地图)。

这将是结构:

TreeMap<String, TreeMap<String, TreeMap<String, Integer>>> squareRPM = new TreeMap<String, TreeMap<String, TreeMap<String, Integer>>>();

我创建了这个类,它将是outter树形图:

   import java.util.TreeMap;

public class Check extends InnerCheck {
private TreeMap<String, InnerCheck> tm; 

    public Check (){
        tm = new TreeMap<String, InnerCheck>();
    }

    public void addTm1(String coinName, InnerCheck coinValue ){
        tm.put(coinName, coinValue);
    }

    public void getT(String coinName){
        System.out.println("My " + tm.get(coinName));

    }

    public TreeMap<String, InnerCheck> getTm() {
        return tm;
    }

    public void setTm(TreeMap<String, InnerCheck> tm) {
        this.tm = tm;
    }
}

内树图将是:

import java.util.TreeMap;

public class InnerCheck extends InnerInnerCheck{
    private TreeMap<String, InnerInnerCheck> ttm; 

    public InnerCheck (){
        ttm = new TreeMap<String, InnerInnerCheck>();
    }
    public void addTm2(String coinName, InnerInnerCheck coinValue){
        ttm.put(coinName, coinValue);
    }
    public TreeMap<String, InnerInnerCheck> getTttm() {
        return ttm;
    }
    public void setTttm(TreeMap<String, InnerInnerCheck> ttm) {
        this.ttm = ttm;
    }
}

内心内树图将是:

import java.util.TreeMap;

public class InnerInnerCheck {

        private TreeMap<String, Integer> tttm; 

        public InnerInnerCheck(){
            tttm = new TreeMap<String, Integer>();
        }
        public void addTm3(String coinName, Integer coinValue){
            tttm.put(coinName, coinValue);
        }
        public TreeMap<String, Integer> getTtm() {
            return tttm;
        }
        public void setTtm(TreeMap<String, Integer> tttm) {
            this.tttm = tttm;
        }
}

主要是我尝试将项目放在嵌套的树形图中,但我不能,因为addTm2有一个错误,它表明我可能以错误的方式实现了这三个类的类。

我正在访问它:`

Check money1 =  new Check();

money1.addTm1("dinero2", money1.addTm2("dinero2",(money1.addTm3("dinero1", 3))));`

错误是:InnerCheck类型中的方法addTm2(String,InnerInnerCheck)不适用于参数(String,void)。

我是第一次尝试在类中实现嵌套树图。请提供反馈,是为了学术项目。提前谢谢。

2 个答案:

答案 0 :(得分:2)

调用money1.addTm3("dinero1", 3)会返回void( - &gt; nothing)

因此,将其用作addTm2(String coinName, InnerInnerCheck coinValue)的参数无法正常工作,因为该方法需要将InnerInnerCheck对象作为参数。 如果要以这种方式使用addTm方法,则必须使它们返回Tree对象:

public InnerInnerCheck addTm2(String coinName, InnerInnerCheck coinValue){
    ttm.put(coinName, coinValue);
    return this;
}

答案 1 :(得分:1)

错误消息告诉您需要知道的一切,只需知道如何解释它。

让我们只关注代码的这一部分:

money1.addTm2("dinero2",(money1.addTm3("dinero1", 3)))

方法addTm2(String coinName, InnerInnerCheck coinValue)需要String和InnerInnerCheck作为参数。 "dinero2"是一个字符串,因此没问题。 但是,对于第二个参数,您传递的方法public void addTm3(String coinName, Integer coinValue)的结果“返回”void而不是InnerInnerCheck方法addTm2所期望的结果。 这就是你所看到的错误。

将其更改为:

Check money1 = new Check();
money1.addTm3("dinero1", 3);
money1.addTm2("dinero2", money1.getTtm());
money1.addTm1("dinero2", money1.getTttm());