第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

復(fù)制數(shù)組列表中的項(xiàng)目

復(fù)制數(shù)組列表中的項(xiàng)目

UYOU 2023-06-08 19:20:08
我正在嘗試克隆字符串中具有 char l 的項(xiàng)目并刪除字符串中具有 char r 的項(xiàng)目,并且當(dāng) chars r 和 l 存在于同一字符串中時(shí)不執(zhí)行任何操作,但是,當(dāng)我實(shí)現(xiàn)我為克隆創(chuàng)建的 if 語(yǔ)句,但適用于其他所有內(nèi)容。我創(chuàng)建了一個(gè) for 循環(huán),它將循環(huán)遍歷 arraylist 列表中的每個(gè)字符串。它將首先檢查該索引中是否在字符串中同時(shí)存在 r 和 l,如果存在它將繼續(xù),然后它將檢查字符串中是否存在 r 它將刪除它然后返回字符串列表,如果不檢查是否 l 然后在列表的最后一個(gè)索引中添加相同的元素。package com.codegym.task.task07.task0716;import java.util.ArrayList;/* R or L*/public class Solution {    public static void main(String[] args) throws Exception {        ArrayList<String> list = new ArrayList<>();        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) {        for (int i = 0; i < list.size(); i++)        {            if (list.get(i).contains("r") && list.get(i).contains("l"))            {                continue;            } else if (list.get(i).contains("r"))            {                list.remove(i);            } else if (list.get(i).contains("l"))            {                list.add(list.size()-1,list.get(i));            }        }        return list;    }}
查看完整描述

3 回答

?
明月笑刀無(wú)情

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊

首先,main在您的方法程序中和在接口中List(而不是ArrayList具體類(lèi)型)。此外,您還可以使用它Arrays.asList來(lái)創(chuàng)建您的初始list. 喜歡,


public static void main(String[] args) throws Exception {

    List<String> list = new ArrayList<>(Arrays.asList("rose", "love", "lyre"));

    list = fix(list);


    for (String s : list) {

        System.out.println(s);

    }

}

然后,為了避免ConcurrentModificationException您需要使用Iterator.remove()(如 Javadoc 所述The behavior of an iterator is unspecified if the behavior of an iterator is unspecified if the underlying collection is used modified while the iteration is progress while the iteration is progress with any way other through the calling this method)。并追加創(chuàng)建要追加的項(xiàng)目的臨時(shí)列表,然后在遍歷List. 并且不要害怕將其存儲(chǔ)value在臨時(shí)變量中(list.get(index)既乏味又難以推理)。最后,您還可以使用變量保存“包含 l”和“包含 r”測(cè)試的結(jié)果。就像是,


public static List<String> fix(List<String> list) {

    Iterator<String> iter = list.iterator();

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

    while (iter.hasNext()) {

        String value = iter.next();

        boolean containsR = value.contains("r"), containsL = value.contains("l");

        if (containsR && containsL) {

            continue;

        } else if (containsR) {

            iter.remove();

        } else if (containsL) {

            appendList.add(value);

        }

    }

    list.addAll(appendList);

    return list;

}

哪個(gè)輸出


love

lyre

love


查看完整回答
反對(duì) 回復(fù) 2023-06-08
?
慕萊塢森

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

與其搞亂循環(huán)、迭代器和ConcurrentModificationExceptions,不如嘗試使用流一個(gè)一個(gè)地執(zhí)行這些步驟。


首先,刪除包含 r 但不包含 l 的字符串。一個(gè)簡(jiǎn)單的List#removeIf方法調(diào)用就足夠了。


//Remove strings that contain r but not l

list.removeIf(s -> s.contains("r") && !s.contains("l"));

現(xiàn)在讓我們“克隆”包含 l 但不包含 r 的字符串。為此,我們將過(guò)濾列表并將結(jié)果收集到一個(gè)新的字符串列表中。然后調(diào)用List#addAll以將它們添加到原始列表中。


//Find all strings that contain l but not r

List<String> stringsThatContainLButNotR = list.stream().filter(s -> s.contains("l") && !s.contains("r"))

        .collect(Collectors.toList());

list.addAll(stringsThatContainLButNotR);

完整示例:


public static void main(String[] args) {

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

    list.add("rose"); // 0

    list.add("love"); // 1

    list.add("lyre"); // 2


    //Remove strings that contain r but not l

    list.removeIf(s -> s.contains("r") && !s.contains("l"));


    //Find all strings that contain l but not r

    List<String> stringsThatContainsLButNotR = list.stream().filter(s -> s.contains("l") && !s.contains("r"))

            .collect(Collectors.toList());

    list.addAll(stringsThatContainsLButNotR);


    list.forEach(System.out::println);//prints "love","lyre","love"

}


查看完整回答
反對(duì) 回復(fù) 2023-06-08
?
泛舟湖上清波郎朗

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊

迭代時(shí)不要修改(添加/刪除)列表。這也適用于其他集合類(lèi)型。


維護(hù)兩個(gè)單獨(dú)的列表 - 一個(gè)用于要添加的元素 ( addList),另一個(gè)用于要?jiǎng)h除的元素( removeList)。最后,從主列表中刪除必需的元素 ( removeList) 并添加其他必需的元素 ( addList)。我已經(jīng)如上所述稍微修改了您的代碼。


import java.util.ArrayList;

import java.util.List;


public class DuplicateItemInList {

    public static void main(String[] args) throws Exception {

        ArrayList<String> list = new ArrayList<>();

        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) {

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

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

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

        {

            if (list.get(i).contains("r") && list.get(i).contains("l"))

            {

                continue;

            } else if (list.get(i).contains("r"))

            {

                removeList.add(list.get(i));

            } else if (list.get(i).contains("l"))

            {

                addList.add(list.get(i));

            }

        }

        list.removeAll(removeList);

        list.addAll(addList);

        return list;

    }

}

輸出:


love

lyre

love


查看完整回答
反對(duì) 回復(fù) 2023-06-08
  • 3 回答
  • 0 關(guān)注
  • 197 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)