编译文件时出现了未经检查或不安全的操作,具体是怎么回事?
package wyf;
import java.util.*;
class RandomAccessElementArrayListFasterThanLinkedList
{
public static void main(String[] args)
{
long[] timeBegin = new long[2];
long[] timeEnd = new long[2];
Integer[] ia = new Integer[5000];
for (int i = 0; i < 5000; i++)
{
ia[i] = i;
}
int tempi;
Random r = new Random();
List list = new ArrayList(Arrays.asList(ia));
timeBegin[0] = System.currentTimeMillis();
for (int i = 0; i < 100000; i++)
{
tempi = (Integer)list.get(r.nextInt(5000));
}
timeEnd[0] = System.currentTimeMillis();
list = new LinkedList(Arrays.asList(ia));
timeBegin[1] = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++)
{
tempi = (Integer)list.get(r.nextInt(5000));
}
timeEnd[1] = System.currentTimeMillis();
}
}
注意:compare.java使用了未经检查或不安全的操作。
注意:有关详细信息, 请使用 -Xlint:unchecked 重新编译。
百度了,知道是在编译此java源文件时,如果你的jdk是1.5或者以上,会出现“使用了未经检查或不安全的操作;请使用 -Xlint:unchecked 重新编译。”这样的警告,原因是JDK 1.5中集合类的实例创建方式与JDK 1.4的有一些不同,JDK 1.5 里面引入很多新的特性。
问下这具体是哪里出现了问题,应该怎么改
jdk
------解决方案--------------------就是你没有用泛型!1.5后,容器类都重写了,支持泛型。
------解决方案--------------------加上泛型就补报错了:
class RandomAccessElementArrayListFasterThanLinkedList{
public static void main(String[] args){
long[] timeBegin = new long[2];
long[] timeEnd = new long[2];
Integer[] ia = new Integer[5000];
for (int i = 0; i < 5000; i++){
ia[i] = i;
}
int tempi;
Random r = new Random();
//List list = new ArrayList(Arrays.asList(ia));
List<Integer> list = new ArrayList<Integer>(Arrays.asList(ia));//使用泛型
timeBegin[0] = System.currentTimeMillis();
for (int i = 0; i < 100000; i++){
tempi = list.get(r.nextInt(5000));//使用了泛型,不需要强制转换.
}
timeEnd[0] = System.currentTimeMillis();
//list = new LinkedList(Arrays.asList(ia));
list = new LinkedList<Integer>(Arrays.asList(ia));//使用泛型
timeBegin[1] = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++){