为了账号安全,请及时绑定邮箱和手机立即绑定

将元素的数量与 ArrayList 中的数字匹配

将元素的数量与 ArrayList 中的数字匹配

慕斯王 2022-10-20 16:54:35
我有两个arraylist,一个是数字,另一个是元素的数量。例如:元素数量:[4, 3, 1]数字:[31、21、50、70、90、80、50、100]for(Integer e : elements){    for(Integer num : numbers){       for (int i = 0; i < e; i++){          System.out.print(num + " ");       }    }    System.out.println();}我想将 4 个元素匹配并打印到 4 个数字,将 3 个元素匹配到接下来的 3 个数字,依此类推。如何根据索引和下一个数字打印数字?输出:31 21 50 7090 80 50100
查看完整描述

4 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

int count = 0;

ArrayList<Integer> elements = new ArrayList<Integer>() {

    {

        add(4);

        add(3);

        add(1);

    }

};


ArrayList<Integer> numbers = new ArrayList<Integer>() {

    {

        add(31);

        add(21);

        add(50);

        add(70);

        add(90);

        add(80);

        add(50);

        add(100);


    }

};

for (Integer e : elements) {


    for (int i = count; i < count+e; i++) {

        System.out.print(numbers.get(i) + " ");

    }

    count += e;

    System.out.println();


}


查看完整回答
反对 回复 2022-10-20
?
MMTTMM

TA贡献1869条经验 获得超4个赞

根据列表 1 中存在的元素循环遍历 first1 和遍历 2 列表。


    ArrayList<Integer> ele = new ArrayList<Integer>();

    ele.add(4);

    ele.add(3);

    ele.add(1);


    ArrayList<Integer> numbers = new ArrayList<Integer>();

    numbers.add(31);

    numbers.add(21);

    numbers.add(50);

    numbers.add(70);

    numbers.add(90);

    numbers.add(80);

    numbers.add(50);

    numbers.add(100);



    int k = 0,i=0,j=0;

    for(i = 0; i < ele.size(); i++){

        for(j = k ; j < k + ele.get(i); j++){

                System.out.print(numbers.get(j)+ " ");

        }

        k = j;

        System.out.print("\n");

    }


查看完整回答
反对 回复 2022-10-20
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

只是为了好玩,让我们为这个小问题提出一个解决方案:


List<Integer> elements = Arrays.asList(4,3,1);

List<Integer> numbers = Arrays.asList(31,21,50,70,90,80,50,100);

首先,让我们确保通过简单的检查我们不会遇到索引越界问题:


if (elements.stream().mapToInt(e -> e).sum() != numbers.size()){

    System.err.println("Invalid input");

    return;

}

现在,我们只需要一个数字列表的迭代器:


Iterator<Integer> it = numbers.iterator();

我们像往常一样迭代元素:


for(int n : elements){

    for(int i = 0; i < n; ++i)

        System.out.print(it.next() + " ");

    System.out.println();

}

使用此解决方案无法访问迭代器之外。


查看完整回答
反对 回复 2022-10-20
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

希望这将达到您的目的


List<Integer> element = new ArrayList<>( Arrays.asList(4, 3, 1));

List<Integer> number = new ArrayList<>( Arrays.asList( 31, 21, 50, 70, 90, 80, 50, 100));

int cnt = 0;

for (Integer integer : element) {

    while (integer > 0) {

        System.out.print(number.get(cnt++));

        integer--;

    }

    System.out.println();

}

如果这个答案有用,请点赞。


查看完整回答
反对 回复 2022-10-20
  • 4 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信