将任何类型的ArrayList传递给方法

cod*_*tty 7 java generics android

我正在开发我的第一个Android应用程序,这是我孩子的数学游戏,并且正在学习Java.我有两个ArrayLists,一个整数0..9和一个可能的操作字符串,目前,只是+-.

我想写一个方法,将一个随机索引返回到一个ArrayList,所以我可以选择一个随机元素.我遇到的是我需要两种方法,每种方法一种ArrayList,即使代码是相同的.有没有办法在单一方法中执行此操作?

我现在用的是:

Random randomGenerator = new Random();

  . . .

n = randomIndexInt(possibleOperands);
int op1 = possibleOperands.get(n);
n = randomIndexInt(possibleOperands);
int op2 = possibleOperands.get(n);
n = randomIndexStr(possibleOperations);
String operation = possibleOperations.get(n);

    . . .

int randomIndexInt(ArrayList<Integer> a){
    int n = randomGenerator.nextInt(a.size());
    return n;
}

int randomIndexStr(ArrayList<String> a){
    int n = randomGenerator.nextInt(a.size());
    return n;
}
Run Code Online (Sandbox Code Playgroud)

我想做的是崩溃randomIndexIntrandomIndexStr采用单一方法.

did*_*xga 17

将您的方法声明为 int randomIndexInt(ArrayList<?> a)

  • 它可能只是`Collection <?>`因为那是声明`size()`的东西. (3认同)

Ner*_*een 7

你只需要数组的大小吗?这样做:

int randomIndex(int size){
    int n = randomGenerator.nextInt(size);
    return n;
}
Run Code Online (Sandbox Code Playgroud)


new*_*rld 5

使用此代码,您可以传递任何类型的列表

int randomIndex(List<?> list){
    int n = randomGenerator.nextInt(list.size());
    return n;
}
Run Code Online (Sandbox Code Playgroud)