2014-01-06 31 views
0

我的代碼如下:在打印過程中跳過的ArrayList的特定值

ArrayList<Integer> al = new ArrayList(); 
al.add(1); 
al.add(2); 
al.add(3); 
al.add(3); 
al.add(4); 

我想打印在以下模式:

[1,2,4] 

我都嘗試了循環和迭代器,但我不能獲得所需的輸出。

幫我整理一下!

我找到了解決辦法,那就是

for(int i=0;i<al.size();i++) { 
if(al.get(i)!=3) 
    System.out.println(al.get(i)); 
    } 

感謝您的幫助

現在我想要得到的結果相同,而不是通過印刷,但通過刪除ArrayList中的元素,我試着用同樣的的條件,但我得到異常

,答案是

Iterator<Integer> iter = al.iterator(); 
     while (iter.hasNext()) { 
      if (iter.next().intValue() == 3) { 
       iter.remove(); 
      } 
     } 
     System.out.println(al); 
+0

這似乎很簡單,但你有什麼問題?你得到了什麼輸出以及它有什麼問題? – PakkuDon

+2

發佈你已經試過的代碼,所以我們可以看到你在做什麼錯誤 –

+1

你想跳過重複?你應該描述List和Out中的值之間的關係。 –

回答

4

逐步通過ArrayList中的所有項目,並測試它們是否等於3,如果不是,則打印它們。

for (Integer i : al) //for each Integer in the al list 
{ 
    if (!i.equals(3)) //if it is NOT (!) equal to 3 
    { 
    System.out.println(i); //then print it 
    } 
} 

顯然,如果你想跳過不僅僅是3號越多,你將需要擴大的條件if用途。從該表中

如果您嘗試使用這種方法從內環路列表中刪除,你會遇到的問題與ConcurrentAccessException刪除元素

注意,這是在this question處理。

+0

現在我想獲得相同的輸出,而不是通過打印,但通過刪除ArrayList的元素,我嘗試了相同的條件,但我得到了異常 – Sudip7

+0

如果你想刪除,你需要提供更多的信息,但很可能是'ConcurrentAccessException'項目在每個循環中。這意味着使用正常的'for'循環,即'for(x; y; z)'或http://stackoverflow.com/questions/18547584/java-concurrentmodificationexception-foreachenhanced-loop-single-thread –

+1

感謝您的鏈接,我得到了answar – Sudip7

0

如果你想獲取列表元素,並根據您的輸出似乎要在列表打印1個偶數

for(int i=0; i< a1.size(); i++) //iterate over List 
{ 
    if(a1.get(i)%2=0 || a1.get(i) == 1) //print if 1 or even 
     System.out.println(a1.get(i)); 
} 
+1

數字1是甚麼? – TheLostMind

+0

我已經在if語句中添加了1的條件 – eatSleepCode

+0

「看起來你想在列表中打印偶數」......坦率地說,他沒有告訴他到底想要什麼......不是你的錯誤...... :) – TheLostMind

0

您還可以使用forEach方法(Java 8):

al.forEach(v -> {if(v!=3) System.out.println(v);}); 
0

在列表中添加所需的跳躍值和打印

我的代碼之前核對這個列表:運行,並給予意見(意見請)

import java.util.*; 
public class Mycode{ 

public static void main(String []args){ 
    ArrayList<Integer> al = new ArrayList(); 
al.add(1); 
al.add(2); 
al.add(3); 
al.add(3); 
al.add(4); 

     ArrayList<Integer> al1 = new ArrayList(); 
     al1.add(3); 
     al1.add(2); 
     int flag=0; 
     for(int j=0; j< al.size(); j++) 
     { 
      flag=0; 
     for(int i=0; i< al1.size(); i++) 
     { 
     if(al.get(j)==al1.get(i)) 
     flag=1; 
     } 
     if(flag==0) 
     System.out.println(al.get(j)); 
     } 
} 
}