Java 需要从arraylist中删除包含字母和don';如果包含其他内容,请不要触摸

Java 需要从arraylist中删除包含字母和don';如果包含其他内容,请不要触摸,java,arraylist,Java,Arraylist,所以我想做一个方法修正,删除所有包含字母r的单词,然后乘以x2,所有包含字母l的单词,如果单词包含字母r和l,就不要碰它。方法工作,但不是它必须如何工作。我认为这与移除有关 public class Solution { public static void main(String[] args) throws Exception { BufferedReader bis = new BufferedReader(new InputStreamReader(Sys

所以我想做一个方法修正,删除所有包含字母r的单词,然后乘以x2,所有包含字母l的单词,如果单词包含字母r和l,就不要碰它。方法工作,但不是它必须如何工作。我认为这与移除有关

public class Solution
{
    public static void main(String[] args) throws Exception
    {
        BufferedReader bis = new BufferedReader(new InputStreamReader(System.in));

        ArrayList<String> list = new ArrayList<String>();
        list.add("rose"); //0
        list.add("liar"); //1
        list.add("lisa"); //2
        list = fix(list);

        for (String s : list)
        {
            System.out.println(s);
        }
    }

    public static ArrayList<String> fix(ArrayList<String> list) {
        //
        ArrayList<String> temp = new ArrayList<String>();
        for(int i = 0; i < list.size(); i++){
            String s = list.get(i);

            boolean strL = s.contains("l");
            boolean strR = s.contains("r");

            if(strR){
                temp.remove(s);
            }
            if(strL && strR) {
                temp.add(s);
            } else {

                if(strL) {
                    temp.add(s);
                    temp.add(s);
                         }
            }

        }
        return temp;
    }
}
公共类解决方案
{
公共静态void main(字符串[]args)引发异常
{
BufferedReader bis=新的BufferedReader(新的InputStreamReader(System.in));
ArrayList=新建ArrayList();
list.add(“rose”);//0
list.add(“说谎者”);//1
list.add(“lisa”);//2
列表=修复(列表);
用于(字符串s:列表)
{
系统输出打印项次;
}
}
公共静态ArrayList修复程序(ArrayList列表){
//
ArrayList temp=新的ArrayList();
对于(int i=0;i
我认为您的逻辑应该是:

if (strL != strR) {
    list.remove(word);
}
如果两者都不包含,则不执行任何操作。如果它同时包含这两个元素,那么它什么也不做。如果它包含L而不是R,则会将其删除。如果它包含R而不是L,它将删除它

当然,我的代码正在修改输入列表。如果您想建立一个
temp
列表,那么可以很容易地推断出我的答案,以得到您想要的

试试这个 if(strL和strR){ 临时添加; }否则如果(strL){ //无所事事 }否则,如果(strR){ //无所事事 }否则{ 临时添加; }

或者你能做的很简单 if(strL和strR){ 临时添加; }其他(!strL&&!strR){ 临时添加; }


希望它能工作

您不必从
temp
列表中删除它

唯一要做的是测试每次迭代时从传入参数的列表中获得的值:

  • 检查这两个条件是否都为真,在这种情况下只需添加原始单词
  • 测试它是否包含一个
    l
    ,然后将其乘以2
  • 否则什么也不做(对于不包含
    l
    r
    的单词,您没有明确说明该怎么做):

哪些产出:

liar
lisa
lisa

您应该使用迭代器, 以及异或(^)运算符

public static ArrayList<String> fix(ArrayList<String> list) {
    ArrayList<String> temp = new ArrayList<>();
    for (Iterator<String> i = list.iterator(); i.hasNext();) {
        String str = i.next();
        boolean isL = str.contains("l");
        boolean isR = str.contains("r");

        if (isR ^ isL) {
            if (isR) {
                i.remove();
            }
            else {
                temp.add(str);
                temp.add(str);
            }
        }
        else {
            temp.add(str);
        }
    }
    return temp;
}
公共静态ArrayList修复程序(ArrayList列表){
ArrayList temp=新的ArrayList();
for(迭代器i=list.Iterator();i.hasNext();){
字符串str=i.next();
布尔isL=str.contains(“l”);
布尔isR=str.contains(“r”);
如果(isR^isL){
如果(isR){
i、 删除();
}
否则{
临时添加(str);
临时添加(str);
}
}
否则{
临时添加(str);
}
}
返回温度;
}

以下是答案…

public class Solution {

    public static void main(String[] args) throws Exception {
        ArrayList<String> list = new ArrayList<String>();
        list.add("rose"); // 0
        list.add("love"); // 1
        list.add("lyre"); // 2
        list = fix(list);

        for (String s : list) {
            System.out.println(s);
        }
    }

    public static ArrayList<String> fix(ArrayList<String> list) {
        // 
        ArrayList<String> teampList = new ArrayList<String>();

        for (int i = 0; i < list.size(); i++) {
            String mainList = list.get(i);

            boolean checkL = mainList.contains("l");
            boolean checkR = mainList.contains("r");

            if (checkR) {
                teampList.remove(mainList);
            }
            if (checkL && checkR) {
                teampList.add(mainList);
            } else {
                if (!checkL && !checkR) {
                    teampList.add(mainList);
                }

                if (checkL) {
                    teampList.add(mainList);
                    teampList.add(mainList);
                }
            }

        }//end for
        return teampList;
    }

}
公共类解决方案{
公共静态void main(字符串[]args)引发异常{
ArrayList=新建ArrayList();
list.add(“rose”);//0
list.add(“love”);//1
list.add(“lyre”);//2
列表=修复(列表);
用于(字符串s:列表){
系统输出打印项次;
}
}
公共静态ArrayList修复程序(ArrayList列表){
// 
ArrayList teampList=新的ArrayList();
对于(int i=0;i
对不起,我解释了bad=|它必须做的事情是,它必须将所有包含字母(l)的单词乘以2。
public class Solution {

    public static void main(String[] args) throws Exception {
        ArrayList<String> list = new ArrayList<String>();
        list.add("rose"); // 0
        list.add("love"); // 1
        list.add("lyre"); // 2
        list = fix(list);

        for (String s : list) {
            System.out.println(s);
        }
    }

    public static ArrayList<String> fix(ArrayList<String> list) {
        // 
        ArrayList<String> teampList = new ArrayList<String>();

        for (int i = 0; i < list.size(); i++) {
            String mainList = list.get(i);

            boolean checkL = mainList.contains("l");
            boolean checkR = mainList.contains("r");

            if (checkR) {
                teampList.remove(mainList);
            }
            if (checkL && checkR) {
                teampList.add(mainList);
            } else {
                if (!checkL && !checkR) {
                    teampList.add(mainList);
                }

                if (checkL) {
                    teampList.add(mainList);
                    teampList.add(mainList);
                }
            }

        }//end for
        return teampList;
    }

}