【问题标题】:comparing ArrayList of Strings with Array of Strings比较 ArrayList of Strings 和 Array of Strings
【发布时间】:2015-05-25 18:25:55
【问题描述】:

我正在尝试使用 .equal 将字符串数组列表与字符串数组进行比较,但它不起作用我试图从数组列表中删除元素,如果它等于数组元素,则每次执行 if 部分而不是删除数组列表中的元素

    public ArrayList removeCommonWords(ArrayList<String> fileTokens){
    System.err.println("size of arraylist: \t"+fileTokens.size()+"\t size of array: \t"+stoppingWordsGlobal.length);
    for(int i=0;i<fileTokens.size();i++){
        for (int j=0;j<stoppingWordsGlobal.length;j++) {
            if (fileTokens.get(i).equals(stoppingWordsGlobal[j])) {
                fileTokens.remove(i);
                System.out.print("\nremoving token number :"+"\t"+i+"\t"+fileTokens.get(i)+"\t"+stoppingWordsGlobal[j]);
            }
        } 
    }
    return fileTokens;
}

【问题讨论】:

    标签: java arrays list arraylist


    【解决方案1】:

    String[] stringArray 转换为ArrayList&lt;String&gt;

    ArrayList<String> strings = new ArrayList<>(Arrays.asList(stringArray));
    

    然后简单地从原始列表中删除共享内容:

    originalList.removeAll(strings);
    

    或在一行中(未经测试):

    originalList.removeAll(new ArrayList<String>(Arrays.asList(stringArray));
    

    【讨论】:

    • 但是其他程序上的相同代码工作正常..我认为它没有必要或者它是?
    • 不,但它更短更容易。
    • 你正在检查两个数组是否相等,我问如果数组的任何元素等于数组列表的元素,如何从数组列表中删除元素
    【解决方案2】:

    试试这个:

    main method code:
    
    ArrayList<String> list= new ArrayList<String>();
          list.add("angularjs");
          list.add("javascript");
          list.add("java");
          list.add("c");
    
         Test test= new Test();
         System.out.println(test.removeCommonWords(list));
    

    你的方法:

    String[] stoppingWordsGlobal={"nodejs","java","angularjs"};
        public ArrayList removeCommonWords(ArrayList<String> fileTokens){
            System.err.println("size of arraylist: \t"+fileTokens.size()+"\t size of array: \t"+stoppingWordsGlobal.length);
            for(int i=0;i<fileTokens.size();i++){
                for (int j=0;j<stoppingWordsGlobal.length;j++) {
                    if (fileTokens.get(i).equals(stoppingWordsGlobal[j])) {
                        String removedString=fileTokens.get(i);
                        fileTokens.remove(i);
                        System.out.print("\nremoving token number :"+"\t"+i+"\t"+removedString+"\t"+stoppingWordsGlobal[j]);
                    }
                } 
            }
            return fileTokens;
        }
    

    输出是:

    arraylist 的大小:4 数组的大小:3

    删除令牌号:0 angularjs angularjs

    删除令牌号:1 java java

    【讨论】:

    • 我已经在做这个了,但它并没有删除我的意思是如果部件每次都在工作,无论是相等还是不相等......
    • 它在我这边工作正常,并返回带有已删除元素的数组列表。在您的方法中,您试图在删除元素后打印值。
    猜你喜欢
    • 1970-01-01
    • 2018-08-23
    • 2022-12-02
    • 2018-09-10
    • 2022-12-26
    • 1970-01-01
    • 1970-01-01
    • 2022-12-28
    • 1970-01-01
    相关资源
    最近更新 更多