我是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()并不是那么严格。您最好进行更多优化。