防止在arraylist中重复给定的数字

时间:2012-10-18 17:08:27

标签: java arraylist

假设您有一个包含10个索引的arraylist,仅包括数字1,2或3。我试图在不重复相同数字的情况下进行打印,如果可能的话。

例如,arraylist包含数字{1,1,1,2,1,2,2,3,1,2} 我希望它打印为:{1,2,3,1,2,1,2,1,2,1}

对不起,如果这可以比我想做的更简单。我对编程还很陌生。

    int j;
    int k;
    for (j=0; j<p.size()-1;j++)
    {
        for(k =1; k<p.size()-1;k++)
        {      
            if(p.get(k)==p.get(j))
            {
    //       Person temp = p.get(j);
    //       p.remove(j);
    //       p.add(temp);
            }        
        }
    }

2 个答案:

答案 0 :(得分:1)

不仅如此......试试这个:

for (int i = 0; i < list.size() - 1; i++) {
    if (!list.get(i+1).equals(list.get(i)) {
        System.out.print (list.get(i));
    }
}

答案 1 :(得分:0)

如果我理解正确的话,你会尝试打印这些数字而不是连续多次打印相同的数字,如果可能的话。

这是一个最接近你要求的简单算法(如果可能的话,更喜欢升序排序,避免连续两次重复相同的数字)它可能不会涵盖所有假设,因为问题没有定义所有可能的情况:

  1. 由于arraylist中的元素只能是1,2或3,所以首先读取arraylist中的每个元素,然后计算每个元素中有1,2到3个元素。
  2. 使用变量跟踪您打印的前一个数字(在开始时将其初始化为3),循环直到所有计数器都为零:

    • 如果前一个数字是3并且1的计数是> 0:打印1,将1保存为“上一个数字”,将计数器减1。
    • 如果计算1 == 0,则尝试2,然后3

    • 如果前一个数字是1而且2的计数是&gt; 0:打印2,将2保存到“上一个数字”,将计数器减2。

    • 如果计算2 == 0,则尝试3,然后1

    • 如果前一个数字是2且3的计数是> 0:打印3,将3保存到“上一个数字”,将计数器减3

    • 如果计算3 == 0,则尝试1,然后2
相关问题