Java 在自定义可写文件中定义集合
我正在编写一个自定义的可写类,其中包含一些java集合。有人能告诉我我的实现有什么错误吗 我在构造函数中传递两个java集合Java 在自定义可写文件中定义集合,java,hadoop,mapreduce,writable,Java,Hadoop,Mapreduce,Writable,我正在编写一个自定义的可写类,其中包含一些java集合。有人能告诉我我的实现有什么错误吗 我在构造函数中传递两个java集合 public class details implements Writable { IntWritable id; Text username; ArrayList<IntWritable> following; ArrayList<Text> tweets; public details (int id, St
public class details implements Writable {
IntWritable id;
Text username;
ArrayList<IntWritable> following;
ArrayList<Text> tweets;
public details (int id, String u, ArrayList<Integer> f, ArrayList<String> t){
this.id = new IntWritable(id);
this.username = new Text(u);
int i = 0;
while(i<f.size()){
this.following.add(new IntWritable(f.get(i)));
i++;
}
i = 0;
while(i<t.size()){
this.tweets.add(new Text(t.get(i)));
i++;
}
}
@Override
public void readFields(DataInput in) throws IOException {
// TODO Auto-generated method stub
id.readFields(in);
username.readFields(in);
int size=in.readInt();
for(int i=0;i<size;i++){
IntWritable temp = new IntWritable();
temp.readFields(in);
following.add(temp);
}
size=in.readInt();
for(int i=0;i<size;i++){
Text temp = new Text();
temp.readFields(in);
tweets.add(temp);
}
}
@Override
public void write(DataOutput out) throws IOException {
// TODO Auto-generated method stub
id.write(out);
username.write(out);
out.writeInt(following.size());
for(IntWritable s : following){
s.write(out);
}
out.writeInt(tweets.size());
for(Text s : tweets){
s.write(out);
}
}
}
公共类详细信息实现可写{
可写标识;
文本用户名;
阵列列表跟踪;
ArrayList推文;
公共详细信息(整数id、字符串u、ArrayList f、ArrayList t){
this.id=新的可写intwrite(id);
this.username=新文本(u);
int i=0;
而(i您必须在使用集合之前初始化集合,就像
following=new ArrayList<IntWritable>();
following=newarraylist();
您只需声明以下内容和tweets,但不初始化它。在使用它之前初始化成员。在您的情况下,请执行此操作
ArrayList<IntWritable> following = new ArrayList<IntWritable>();
ArrayList<Text> tweets= new ArrayList<Text>;
ArrayList following=new ArrayList();
ArrayList tweets=新的ArrayList;