

以下のプログラムで質問です

①入力してその数を入れたlistnumberの中に、同じ数が入っていたら、後の数を削除したいです。  
以下のコードのように書きましたが、うまくいきません。どのように書けばいいでしょうか？

[code]

    if(i==i){it.removes();}
    
[/code]

②
「もし0が入っていたらそいつを削除する」というぷろぐらむを書きたくて、以下のコードを書いたところ、エラーが出たので、Iteratorを使いました。なぜ以下のようなfor文ではなく、Iteratorの方がいいのでしょうか？

[code]

    for(listnumber==0){remove.listnumber[i]}
    
[/code]

以下、全体のコードです。

[code]

    import java.util.*;
    
    import java.util.List;
    
    public class Main2{
      
    
      public static void main(String[] args)  {
        
    
        Scanner sc=new Scanner(System.in);
        
        
        ArrayList<Integer> listnumber = new ArrayList<Integer>(); 
        for(int i=0;i<10;i++){
        
        
        int number=sc.nextInt();
        listnumber.add(number);
        
        }
        System.out.println("nyuryoku End");
    
          //イテレータを使って、このように書くのがキレイ。
          
          
          while(it.hasNext()){
            int i = it.next();
            //もしリストの要素に0が含まれていたらそいつを消す
            if(i  == 0) {it.remove();}
            //もしリスト内に同じ数字が含まれていたらそいつを消す
            if(i==i){it.removes();}
        }
         System.out.println("登録データ数:" + listnumber.size());
    
        for(int n=0;n<listnumber.size();n++){
    
         System.out.println("listnumber"+listnumber.get(n));
        }
        }
      
    }
    
[/code]


CC BY-SA 4.0
2020-09-19T09:35:51.983
70535
2020-09-19T21:51:27.100
39688
question
java
Iteratorを使って、リスト内に同じ要素があった場合、取り除く方法を教えてください


> うまくいきません。どのように書けばいいでしょうか？

これは、自分の値と自分の値が同じなら。という常にtrueを返す条件で比較をしているからです。これを自分で書くとわりと面倒です。  
そこで同じ値を含ませたくない。  
特定の文字を含ませたくない。などのデータ整形に対する処理を手軽に書ける  
Stream API使うと楽に表現できますが、それではだめですか？

[code]

            Scanner sc = new Scanner(System.in);
            List<Integer> listnumber = sc.tokens().filter(
                o-> o!=null && !o.equals("0")) //Nullと0を除去
                .map(s -> Integer.parseInt(s))//String -> Integer 変換
                .distinct()//重複データの削除
                .collect(Collectors.toList());//Stream->List変換
    
[/code]


CC BY-SA 4.0
2020-09-19T21:45:56.633
70547
2020-09-19T21:51:27.100
2020-09-19T21:51:27.100
10174
10174
70535
answer