用Java创建列表[x-n,x-n+;1,…,x,x+;1,x+;2,…,x+;n]

用Java创建列表[x-n,x-n+;1,…,x,x+;1,x+;2,…,x+;n],java,implementation,Java,Implementation,我想得到一个返回ArrayList的方法,如下所示: int x = ...; int n = ...; List<Integer> list = getList(x,n); System.out.println(list.size()) // => 2n+1 int i = ...; for(int elem : list){ System.out.println(elem); } // => x-n, x-n+1, x-n+2,..., x-1, x, x+1,.

我想得到一个返回ArrayList的方法,如下所示:

int x = ...;
int n = ...;
List<Integer> list = getList(x,n);
System.out.println(list.size()) // => 2n+1
int i = ...;
for(int elem : list){
  System.out.println(elem);
} // => x-n, x-n+1, x-n+2,..., x-1, x, x+1,..., x+n

getList()
的有效实现是什么?

这是用于循环的代码,它的初始值x-n,它将循环到x+n

    public List<Integer> getList(int x,int n){
        int lower = x-n ; 
        int upper = x + n ; 
        List<Integer> ls= new ArrayList<Integer>() ; 
        for(int i = lower ; i<=upper ; i++){
            ls.add(i) ; 
        }

   return ls ; 
}
公共列表getList(intx,intn){
int较低=x-n;
整数上限=x+n;
List ls=新的ArrayList();

对于(inti=lower;i代码基本上循环数组一次。为了使代码健壮,必须考虑n为零或负的情况

public List<Integer> getList(int x, int n) {
    ArrayList<Integer> returnVal = new ArrayList<Integer>();
    if (n < 0) {
        for (int i = n; i <= -n; i++) {
             returnVal.add(i + x);
        }
    }
    else {
        for (int i = -n; i <= n; i++) {
             returnVal.add(i + x);
        }
    }
    return returnVal;
}
公共列表getList(intx,intn){
ArrayList returnVal=新的ArrayList();
if(n<0){

对于(int i=n;i)您对“高效”的描述不清楚。您是指最简单的实现?还是指最快且内存使用量最小的实现?
public List<Integer> getList(int x, int n) {
    ArrayList<Integer> returnVal = new ArrayList<Integer>();
    if (n < 0) {
        for (int i = n; i <= -n; i++) {
             returnVal.add(i + x);
        }
    }
    else {
        for (int i = -n; i <= n; i++) {
             returnVal.add(i + x);
        }
    }
    return returnVal;
}