我是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(),并没有那么严格。你最好做更多的优化。