使用Java在Hadoop中形成自定义链表



我是Hadoop编程的新手。如果这是一个愚蠢的问题,很抱歉,但请帮帮我。

对于我的项目,我需要为(键,值)对中的值形成一个带有链表的自定义数据类型。这是我的课。

public class Nikhil implements Writable {
  String str;
  Nikhil next;
  Nikhil() {
    this.str="";
    this.next=null;
  }
  public void add(String t) {
    if(this.str.equals("")) {
      this.str=t;
      this.next=null;
      return;
    } else {
      Nikhil n=new Nikhil();
      n.str=t;
      n.next=null;
      Nikhil temp=this;
      while(temp.next!=null)
      {
        temp=temp.next;
      }
      temp.next=n;
      return;
    }
  }
  public String get()
  {
    if(!this.str.toString().equals(""))
    {
      String result="";
      result=this.str.toString();
      Nikhil temp=this.next;
      while(temp!=null)
      {
        result=result+","+temp.str.toString();
        temp=temp.next;
      }
      return result;
    }
    else
      return "";
  }
  @Override
  public void readFields(DataInput in) throws IOException {
    str=in.readUTF();
    //some code for reading next pointer
  }
  @Override
  public void write(DataOutput out) throws IOException {
    out.writeUTF(str);
    //some code for next
    //
  }
}

请更正以下代码并帮助我解决问题。在hadoop中将树形成为自定义数据类型的方法是什么。

    @Override
    public void readFields(DataInput in) throws IOException {
        str = in.readUTF();
        //some code for reading next pointer
        if (!"".equals(str)) {
            boolean existNext = in.readBoolean();
            if (existNext) {
                next = new Nikhil();
                next.readFields(in);
            }
        }
    }
    @Override
    public void write(DataOutput out) throws IOException {
        out.writeUTF(str);
        //some code for next
        //
        if (!"".equals(str)) {
            boolean existNext = null != next;
            out.writeBoolean(existNext);
            if (existNext) {
                next.write(out);
            }
        }
    }

也许上面的代码就是你想要的。但是代码的其他部分,尤其是add(),并没有那么严格。你最好做更多的优化。

相关内容

  • 没有找到相关文章

最新更新