Collection <string []>

时间:2018-12-29 19:26:34

标签: java string arraylist contains

我在Eclipse的Collection上收到警告,不太可能将类型为String的contains(Object)用作警告。有没有办法修改代码以免收到警告?

 String[] findNames = {"shares","ticker","avgCost",
                      "mktPrice","gnLs","totVal"};    


   // get the name of every public instance variable 
   ArrayList<String[]> publicNames = new ArrayList<String[]>();        
   for(Field publicField : publicFields) {
       String[] name = new String[2];
       name[0] = publicField.getName();
       name[1] = publicField.getType().toString();
       publicNames.add(name);           
   } 

for (int i = 0; i < 6; i++){           
       if(publicNames.contains(findNames[i])){
           System.out.println("\n***** Warning: instance variable " + 
                              findNames[i] + " declared as \"public\" +
                              "*****\n ");               
       }           
}

2 个答案:

答案 0 :(得分:1)

这是因为publicNames是ArrayList中的string[],并且您正在尝试查看它是否包含单个字符串,这不适用。

现在,我不知道为什么要存储字符串元组和类型。我建议您以这种方式进行更改,但如果您确实需要它们,则可能需要查看@Deadpool的答案

ArrayList<String> publicNames = new ArrayList<String>(); 

现在此行不会发出任何警告

publicNames.contains(findNames[i])

答案 1 :(得分:1)

您正尝试将StringString array进行比较,如果要查找String包含在字符串数组List<String[]>中的值

您可以使用java-8流

publicNames.stream().flatMap(Arrays::stream).anyMatch(item->item.equals(findNames[i])) 
  如果String[]中的publicNames中的任何一个包含findNames[i]

将返回true,否则将返回false