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

我有两个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 70


90 80 50


100


慕斯王
浏览 78回答 4
4回答

小怪兽爱吃肉

int count = 0;ArrayList<Integer> elements = new ArrayList<Integer>() {&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; add(4);&nbsp; &nbsp; &nbsp; &nbsp; add(3);&nbsp; &nbsp; &nbsp; &nbsp; add(1);&nbsp; &nbsp; }};ArrayList<Integer> numbers = new ArrayList<Integer>() {&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; add(31);&nbsp; &nbsp; &nbsp; &nbsp; add(21);&nbsp; &nbsp; &nbsp; &nbsp; add(50);&nbsp; &nbsp; &nbsp; &nbsp; add(70);&nbsp; &nbsp; &nbsp; &nbsp; add(90);&nbsp; &nbsp; &nbsp; &nbsp; add(80);&nbsp; &nbsp; &nbsp; &nbsp; add(50);&nbsp; &nbsp; &nbsp; &nbsp; add(100);&nbsp; &nbsp; }};for (Integer e : elements) {&nbsp; &nbsp; for (int i = count; i < count+e; i++) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.print(numbers.get(i) + " ");&nbsp; &nbsp; }&nbsp; &nbsp; count += e;&nbsp; &nbsp; System.out.println();}

MMTTMM

根据列表 1 中存在的元素循环遍历 first1 和遍历 2 列表。&nbsp; &nbsp; ArrayList<Integer> ele = new ArrayList<Integer>();&nbsp; &nbsp; ele.add(4);&nbsp; &nbsp; ele.add(3);&nbsp; &nbsp; ele.add(1);&nbsp; &nbsp; ArrayList<Integer> numbers = new ArrayList<Integer>();&nbsp; &nbsp; numbers.add(31);&nbsp; &nbsp; numbers.add(21);&nbsp; &nbsp; numbers.add(50);&nbsp; &nbsp; numbers.add(70);&nbsp; &nbsp; numbers.add(90);&nbsp; &nbsp; numbers.add(80);&nbsp; &nbsp; numbers.add(50);&nbsp; &nbsp; numbers.add(100);&nbsp; &nbsp; int k = 0,i=0,j=0;&nbsp; &nbsp; for(i = 0; i < ele.size(); i++){&nbsp; &nbsp; &nbsp; &nbsp; for(j = k ; j < k + ele.get(i); j++){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.print(numbers.get(j)+ " ");&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; k = j;&nbsp; &nbsp; &nbsp; &nbsp; System.out.print("\n");&nbsp; &nbsp; }

qq_遁去的一_1

只是为了好玩,让我们为这个小问题提出一个解决方案: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()){&nbsp; &nbsp; System.err.println("Invalid input");&nbsp; &nbsp; return;}现在,我们只需要一个数字列表的迭代器:Iterator<Integer> it = numbers.iterator();我们像往常一样迭代元素:for(int n : elements){&nbsp; &nbsp; for(int i = 0; i < n; ++i)&nbsp; &nbsp; &nbsp; &nbsp; System.out.print(it.next() + " ");&nbsp; &nbsp; System.out.println();}使用此解决方案无法访问迭代器之外。

幕布斯6054654

希望这将达到您的目的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) {&nbsp; &nbsp; while (integer > 0) {&nbsp; &nbsp; &nbsp; &nbsp; System.out.print(number.get(cnt++));&nbsp; &nbsp; &nbsp; &nbsp; integer--;&nbsp; &nbsp; }&nbsp; &nbsp; System.out.println();}如果这个答案有用,请点赞。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java