4

我想要一个事物列表,然后我想测试列表以查看是否存在项目:

这是我的示例片段:

    String[] handToolArray = {"pliers", "screwdriver", "tape measure"}; 
    List<String> handToolList = new ArrayList<String>( Arrays.asList(handToolArray));

    if (handToolList.contains("pliers")){
        System.out.println("I have pliers");
    } else {
        System.out.println("I don't have pliers");
    }

在第二行,Arrays.asList(handToolArray) 生成:

"Type safety: The expression of type List needs unchecked conversion to conform to Collection<? extends String>"

问题:有没有更好的方法来创建然后查询列表,即简洁并且不需要抑制未经检查的警告?

4

3 回答 3

5

您可以在不显式构造数组的情况下执行此操作(可变参数仍使用数组)。

List<String> handToolList = Arrays.asList("pliers", "screwdriver", "tape measure");
于 2010-09-21T23:38:47.683 回答
0

注意 List 接口定义了indexOf()方法,你可以用它来检查是否存在:

List<String> list = Arrays.asList(handTools);
if(list.indexOf("pliers!") != -1) {
  System.out.println("We have pliers.");
}
else {
  System.out.println("We do not have any pliers.");
}
于 2010-09-21T23:54:00.817 回答
0

首先,我没有收到类型安全警告,你也不应该。你用的是什么Java编译器?

Arrays.asList 已经创建了一个 ArrayList (由原始数组支持),所以如果你不需要一个副本,你可以这样做

 List<String> handToolList =  Arrays.asList(handToolArray);

另请注意,Apache Commons Lang ArrayUtils 之类的功能可以直接检查数组中是否存在元素:

if (ArrayUtils.exists(handToolArray , "pliers"))
于 2010-09-21T23:39:16.823 回答