代码之家  ›  专栏  ›  技术社区  ›  Tetsuya3850

如何在Java中将Stack<Integer>转换为int〔〕?复制

  •  -1
  • Tetsuya3850  · 技术社区  · 1 年前

    我有一个 Stack<Integer> 并且需要输出为 int[] . 在Java中,有什么好方法可以做到这一点?

    此问题已为列表回答 How can I convert List<Integer> to int[] in Java?

    我试过了,效果很好。 stack.stream().mapToInt(i->i).toArray();

    但我也在想是否还有其他办法。

    2 回复  |  直到 1 年前
        1
  •  2
  •   user24714692    1 年前

    您可以使用 stream() mapToInt() 方法。

    密码

    import java.util.*;
    
    public class StackToArray {
        public static void main(String[] args) {
            Stack<Integer> stack = generateRandomStack(10);
            int[] array = stackToArray(stack);
    
            for (int num : array) {
                System.out.println(num);
            }
        }
    
        public static Stack<Integer> generateRandomStack(int size) {
            Stack<Integer> stack = new Stack<>();
            Random rand = new Random();
            for (int i = 0; i < size; i++) {
                stack.push(rand.nextInt(100));
            }
            return stack;
        }
    
        public static int[] stackToArray(Stack<Integer> stack) {
            int[] arr = stack.stream().mapToInt(Integer::intValue).toArray();
            return arr;
        }
    }
    
    

    打印

    67 68 84 11 97 3 49 6 41 91


    您也可以使用一个简单的迭代循环,我更喜欢它,它可能也会稍微高效一些:

    
    import java.util.Stack;
    import java.util.Random;
    
    public class StackToArray {
        public static void main(String[] args) {
            Stack<Integer> stack = generateRandomStack(10);
            int[] array = simpleStackToArray(stack);
    
            for (int num : array) {
                System.out.println(num);
            }
        }
    
        public static Stack<Integer> generateRandomStack(int size) {
            Stack<Integer> stack = new Stack<>();
            Random rand = new Random();
            for (int i = 0; i < size; i++) {
                stack.push(rand.nextInt(100));
            }
            return stack;
        }
    
        public static int[] simpleStackToArray(Stack<Integer> stack) {
            int size = stack.size();
            int[] arr = new int[size];
            for (int i = 0; i < size; i++) {
                arr[i] = stack.pop();
            }
            return arr;
        }
    }
    
    

    打印

    23 13 29 12 42 95 20 8 64 21

        2
  •  0
  •   Alickx    1 年前

    int[]array=stack.stream().mapToInt(i->i).toArray();

    推荐文章