亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從方法返回迭代器

從方法返回迭代器

江戶川亂折騰 2021-09-15 16:39:23
我似乎無法在Iterator從方法返回時打印元素removeTwos()。我試圖從列表中刪除只有兩個字符的元素。public class Main {    public static void main(String[] args) {        // write your code here        List<String> list = new ArrayList<>();        list.add("hi");        list.add("what");        list.add("who");        list.add("ok");        System.out.println(removeTwos(list));    }    public static String removeTwos(List<String> stringList) {        Iterator<String> itr = stringList.iterator();        for(int i = 0; i < stringList.size(); i++) {            if(itr.hasNext() && itr.next().length() == 2) {                itr.remove();                System.out.println(itr.toString());            }        }        return itr.toString();    }}
查看完整描述

3 回答

?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

問題是:你根本不需要Iterator你想要做的事情。您可以使用列表的方法一一搜索列表中的每個項目。


試試這個代碼,看看它是否適合你:


public class JavaApplication255 {


    public static void main(String[] args) {

        // write your code here

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

        list.add("hi");

        list.add("what");

        list.add("who");

        list.add("ok");


        removeTwos(list);

        System.out.println(list);

    }


    public static void removeTwos(List<String> stringList){


        for(int i = stringList.size() - 1; i >= 0 ; i--){

            String string = stringList.get(i);


            if (string.length() == 2){

                stringList.remove(string);

            }

        }

    } 

}


查看完整回答
反對 回復 2021-09-15
?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

要Iterator針對此問題使用 ,您可以將removeTwos方法編輯為如下所示:


public static String removeTwos(List<String> stringList) {


    Iterator<String> itr = stringList.iterator();

    while (itr.hasNext()) {

        String value = itr.next();

        if (value.length() == 2) {

            System.out.println(value);

            itr.remove();

        }

    }


    return stringList.toString();

}

使用 時Iterator,在循環遍歷列表時從列表中刪除元素是安全的。這是一個證明它是安全的鏈接。


查看完整回答
反對 回復 2021-09-15
?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

除非您需要使用 iter,否則使用流和過濾器很容易 1 班輪。

List<String> noTwos = list.stream().filter(s-> s.length() != 2).collect(Collectors.toList());



查看完整回答
反對 回復 2021-09-15
  • 3 回答
  • 0 關注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號