在打印期间跳过ArrayList的特定值

时间:2014-01-06 08:44:47

标签: java 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循环和迭代器,但我没有得到所需的输出。

帮我整理一下!

我找到了解决方案,那就是

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

4 个答案:

答案 0 :(得分: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中处理。

答案 1 :(得分: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));
}

答案 2 :(得分:0)

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

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

答案 3 :(得分: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));
      }
 }
}