1

这是我的第二个 Java 程序,也是我第一次使用 arrayList。我搜索了如何转换它,并使用了我找到的方法,但我得到了一个错误......

package eliminarepetidos;
import java.util.ArrayList;
import java.util.Random;
public class Eliminarepetidos {

public static ArrayList<Integer> eliminaRepetidos (int[] vet){
    ArrayList<Integer> retorna = new ArrayList<>();
    for(int i = 0; i<vet.length; i++){
        for (int j = i + 1; j < vet.length; j++)
            if ((vet[i] == vet[j])&&(vet[i]!=0)) vet[j]=0;                      
        if(vet[i]!=0) retorna.add(vet[i]); }
    return retorna;
}

public static void imprime (int[] vet, int numElem){
    System.out.print("Vetor resultante:");
    for (int i = 0;i<numElem;i++)    
        System.out.print(" " +vet[i]);       
}

public static void main(String[] args) {

    int[] t;
    t = new int[10];
    Random generator = new Random();
    for(int i = 0; i<10; i++)
        t[i] = generator.nextInt(12) +9;
    ArrayList<Integer> temporario = new ArrayList<>();
    temporario = eliminaRepetidos(t);
    int [] vetfinal = temporario.toArray(new int[temporario.size()]); //line with error
    imprime(vetfinal,vetfinal.length);
}
}

我应该如何使用该命令使其正常工作?谢谢!

4

1 回答 1

0

任何 ArrayList 都可以使用toArray(<Type> t)( ArrayList<Thing> list -> Thing[] arr = list.toArray(new Thing[0])) 转换为简单数组,但这可能不是您真正的问题。

根据您显示的代码,您真正的问题更有可能是:“我如何迭代数组列表?”,答案是:“与数组或任何其他集合相同,使用 for 循环在它的foreach模式中”:

int[] numbers = {...}
ArrayList<Thing> things = new ArrayList<Thing>();
thing.add(new Thing(...));
...

for(int i: numbers) {
  System.out.println(i); // will print each element in the array
}

for(Thing t: things) {
  System.out.println(t); // will print each element in the arraylist
}

自 v1.5 以来,循环的这种使用for已成为普通 Java 的一部分 =)

于 2013-06-08T14:19:06.253 回答