在java中隔离具有不同组的列表元素

时间:2017-12-25 04:21:40

标签: java list arraylist

假设我有一个总是有偶数的列表。现在我想用以下条件将列表与不同的组索引分开,

1) First element (1st element) with one index (EX: 1)
2) Next two elements with same index (Ex: 2nd, 3rd element with index 2,
                                          4th and 5th element with index 3)
3) Last element(6th element) with index 4

我尝试使用嵌套for循环来实现相同的效果,但没有获得预期的输出。

感谢任何帮助。 样本输入:

[2,3,53,52,33,12,44,66]

示例输出:

2 - 1
3 - 2
53 - 2
52 - 3
33 - 3
12 - 4
44 - 4
66 - 5

2 个答案:

答案 0 :(得分:1)

我使用了两个额外的变量z和count实现了这个,我是    仅当计数%2为0时递增z,并且最后我们需要检查是否为   size-1等于第三个条件的i变量。    另外,对于第一个条件,我在第一个索引处打印arraylist值,在i处打印z变量值,如果i计数器值为0。

请参阅我为您的输入列表模拟的以下代码    手动添加!请使用链接进行测试:    http://rextester.com/ESYF23501

import javafx.collections.ArrayChangeListener;
import java.util.ArrayList;
import java.util.Scanner;

public class Main {



    public static void main(String[] args) {
        ArrayList<Integer> a= new ArrayList<Integer>();
        a.add(2);
        a.add(3);
        a.add(53);
        a.add(52);
        a.add(33);
        a.add(12);
        a.add(44);
        a.add(66);
        int i = 0;
        int z = 2;
        //Count to group the middle number by checking its value with respect to mod 2
        int count = 0;
        for(i = 0; i < a.size(); i++)
        {

           if(i == 0 )
            {
                z = i+1;
                System.out.println(""+a.get(i)+" " + "" +z+"" );

            }
            if(i > 0 && i != (a.size() -1))
            {
                //Increament z if the count is even so that we print the group for two times
                if(count%2 == 0)
                {
                    z++;
                }

                System.out.println(""+a.get(i)+"" +" "+ ""+z+"" );
                count ++;
            }
            if(i == a.size() -1 )
            {
                z++;
                System.out.println(""+a.get(i)+"" +" "+ ""+z+"" );
            }
        }
    }
}

答案 1 :(得分:0)

如果我理解你的问题,这应该可以正常工作:

System.out.println(elements.get(0) + " - 1");  // Prints the first number, which has the value of 1
int value = 2;  // Value corresponding to the number
for (int i = 1; i < elements.size(); i++) {  // Loops through the list starting at second element (index of 1)
    System.out.println(elements.get(i) + " - " + value);  // Prints the number and the value
    if (i % 2 == 0) value++;  // Increases the value every two loops
}

首先打印出第一个数字和1,正如您所描述的那样始终相互对应。然后它循环遍历从第二个数字(i = 1)开始的数字列表,并打印出每个数字和相应的值。每两个循环的值增加,这是每次循环数可被2整除(i%2)。