创建一个数字数组而不循环?

use*_*232 2 java arrays loops jakarta-mail

好吧我正在使用JavaMail库,我正在尝试获取某些消息号.我想有效地做到这一点,而不是必须循环两次...无论如何我的问题是:我怎么能创建一个从索引开始并在索引x结束x - 11而不循环的数组?

Rod*_*eas 7

如果要创建和填充数组,基本上有三个选项:

  1. 明确写出值: int[] nums = new int[] { 0, 1, 2, 3, 4, ... }

  2. 使用某种形式的for循环: for (int i = 0; i < 10; i++) { nums[i] = i; }

  3. 递归创建它:

int[] nums = new int[12];
nums = populate(0, x, nums);

private int[] populate(int index, int x, int[] nums) {
    if (nums.length >= index) {
        return nums;
    } else {
        nums[index] = x - index; // x-0 through x-11
        return populate(index+1, x, nums);
    }
}

Vanilla Java没有额外的库和诸如此类的东西,它不支持map函数,它允许你指定一个以某种方式自动生成你的值的函数.

虽然,我真的不明白为什么你不想使用循环,特别是对于像这样的微不足道的东西.

  • JavaMail有一个选项`Folder.getMessages(int [] array)`,它有一个获取单个消息的选项.现在哪一个更有效率?1.循环并获取每条消息2.遍历,创建一个要获取的消息数组,然后调用getMessages().谢谢您的帮助! (2认同)