我有2个数组。
一个Array
包含我要寻找的字符串。
static String[] namesToLookFor = { "NR", "STAFFELNR", "VONDATUM"};
另一个Array
具有字符串,这是我从* .csv文件中获得的。
indexString = indexReader.readLine();
indexArray = indexString.split(";");
我的目标是system.out.println()
的值是indexArray[]
,而不是namesToLookFor[]
中的值。
例如:
namesToLookFor = {"NR"};
indexArray = {"HELLO","NR"};
//Any Algorithm here...
因此,在这种情况下"HELLO"
应该打印出来,因为它不在namesToLookFor[]
数组中。
答案 0 :(得分:5)
如果您使用的是Java8,则可以执行以下操作
List<String> list = Arrays.asList(namesToLookFor);
Arrays.stream(indexArray)
.filter(item -> !list.contains(item))
.forEach(System.out::println);
答案 1 :(得分:1)
您可以遍历indexArray
并检查每个元素是否包含在namesToLookFor
数组中:
String[] namesToLookFor = {"NR"};
String[] indexArray = {"HELLO","NR"};
List<String> excludedNames = Arrays.asList(namesToLookFor);
for(String s : indexArray) {
if (!excludedNames.contains(s)) {
System.out.println(s);
}
}
仅输出“ HELLO”。
答案 2 :(得分:1)
// Put array into set for better performance
Set<String> namesToFilter = new HashSet<>(Arrays.asList("NR", "STAFFELNR"));
String[] indexArray = indexReader.readLine().split(";");
// Create list with unfiltered values and remove unwanted ones
List<String> resultList = new ArrayList<>(indexArray);
resultList.removeAll(namesToFilter);
// Do with result whatever you want
for (String s : resultList)
System.out.println(s);
答案 3 :(得分:0)
通过Array
,您可以使用contains
函数,但是在将其转换为ArrayList
之后,contains
函数将检查ArrayList
是否包含特定值
for (int i =0; i<indexArray.length; i++) {
if (!Arrays.asList(namesToLookFor).contains(indexArray[i]))
System.out.println(indexArray[i]);
}