Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建一个没有循环的数字数组?_Java_Arrays_Loops_Jakarta Mail - Fatal编程技术网

Java 创建一个没有循环的数字数组?

Java 创建一个没有循环的数字数组?,java,arrays,loops,jakarta-mail,Java,Arrays,Loops,Jakarta Mail,好的,我正在使用JavaMail库,我正在尝试获取某些消息编号。我想高效地完成这项工作,而不必在某些事情上重复两次……无论如何,我要问你的问题是:如何创建一个从索引x开始并在索引x-11结束的数组而不循环?如果你想创建和填充数组,基本上有三个选项: int[] myArray = new int[] {x, x-1, x-2, x-3, x-4, x-5, x-6, x-7, x-8, x-9, x-10, x-11}; 显式写入值:int[]nums=newint[]{0,1,2,3,4,…

好的,我正在使用JavaMail库,我正在尝试获取某些消息编号。我想高效地完成这项工作,而不必在某些事情上重复两次……无论如何,我要问你的问题是:如何创建一个从索引
x
开始并在索引
x-11
结束的数组而不循环?

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

int[] myArray = new int[] {x, x-1, x-2, x-3, x-4, x-5, x-6, x-7, x-8, x-9, x-10, x-11};
  • 显式写入值:
    int[]nums=newint[]{0,1,2,3,4,…}

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

  • 以递归方式创建它:

  • int[]nums=新的int[12]; nums=填充(0,x,nums); 私有int[]填充(int索引、int x、int[]nums){ 如果(nums.length>=索引){ 返回nums; }否则{ nums[index]=x-index;//x-0到x-11 返回填充(索引+1,x,nums); } } Vanilla Java没有额外的库等等,它不支持map函数,该函数允许您指定一个以某种方式自动生成值的函数


    不过,我真的不明白为什么您不想使用循环,尤其是对于这样的小事。

    除了显式声明所有索引之外,没有其他方法了吗?您不需要使用循环来创建int数组;)<代码>int[]数组=新int[11]Folder.getMessages(int[]数组),它有一个选项来获取单个消息。现在哪一个更有效?1.循环遍历并获取每条消息2.循环遍历,生成要获取的消息numebr数组,然后调用getMessages()。谢谢你的帮助!如果API提供批量获取以及逐项获取,那么与第一个API相比,几乎总是更有效的调用。设想一个后台数据库:在一次选择中获取11项比在11次选择操作中获取11项更快。还有一个getMessages方法,它获取开始和结束消息编号,并返回消息对象数组。如果要获取的消息编号不是连续的,那么最好一次获取一条消息,因为其他方法在内部都是这样做的。 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); } }