hadoop中的java arraylist< string>.contains()

rkue9o1l  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(300)

我试图删除hadoop中名为outputlist的arraylist中的重复字符串。
这是我的密码:

List<String> newList = new ArrayList<String>();

    for( String item : outputList){
      if(!newList.contains(item))
        newList.add(item);
      else newList.add("wrong");
    }

问题是newlist中的字符串都是“错误的”。
一些事实:1。上面的代码在本地机器上运行良好。
我可以在hadoop中写出outputlist中的字符串。outputlist中的大多数字符串都不同(存在重复项)。
我尝试了其他方法来删除重复项。比如使用hashset。但是当我使用outputlist初始化hashset时,得到的hashset是空的。
hadoop中的java版本是javac1.6.0\u18
谢谢。
以下是我的代码:

public static class EditReducer 
       extends Reducer<Text,Text,Text,Text> {

    private Text editor2 = new Text();

    public void reduce(Text key, Iterable<Text> values, 
                       Context context
                       ) throws IOException, InterruptedException {
      //write the content of iterable to an array list.

     List<String> editorList =new ArrayList<String>();
     for (Text t:values) {
      editorList.add(t.toString());

     }

    //if a user appears more than once in the list, add to outputList
     int occ;
     List<String> outputList =new ArrayList<String>();

     for (int i=0;i<editorList.size();i++) {

      occ= Collections.frequency(editorList, editorList.get(i));
      if(occ>1) {
        outputList.add(editorList.get(i));
      }
    }

    //make outputList distinct
   List<String> newList = new ArrayList<String>();

   for( String item : outputList){
      if(!newList.contains(item))
        newList.add(item);
      else newList.add("wrong");
    }

      for (String val : newList) {
        editor2.set(val);
        context.write(editor2,editor2); 
      }
    }

  }
uubf1zoe

uubf1zoe1#

可以创建嵌套的 for 在原稿中循环 for 循环并比较字符串:

List<String> newList = new ArrayList<String>();

    for(String item : outputList) {
        boolean contains = false;
        for(String str: newList) {
            if(str.equals(item)) {
                contains = true;
                break;
            }
        }
        if(!contains) {
            newList.add(item);
        } 
        else {
            newList.add("wrong");
        }
    }

相关问题