Java 我应该在这里使用哪种算法?在字符串数组中查找字符串

Java 我应该在这里使用哪种算法?在字符串数组中查找字符串,java,algorithm,Java,Algorithm,我有两个数组 一个数组有字符串,我正在查找 static String[] namesToLookFor = { "NR", "STAFFELNR", "VONDATUM"}; 另一个数组有字符串,我是从*.csv文件中获得的 indexString = indexReader.readLine(); indexArray = indexString.split(";"); 我的目标是system.out.println()索引数组[]中的值,而不是[]的名称中的值 例如: namesToL

我有两个数组

一个
数组
有字符串,我正在查找

static String[] namesToLookFor = { "NR", "STAFFELNR", "VONDATUM"};
另一个
数组
有字符串,我是从*.csv文件中获得的

indexString = indexReader.readLine();
indexArray = indexString.split(";");
我的目标是
system.out.println()
索引数组[]中的值,而不是[]的
名称中的值

例如:

namesToLookFor = {"NR"};

indexArray = {"HELLO","NR"};


//Any Algorithm here...

因此,在这种情况下,应该打印出“HELLO”
,因为它不在[]数组的
名称库中。

您可以迭代
索引数组
并检查每个元素是否包含在
名称库中

    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);
        }
    }
String[]namestookfor={“NR”};
字符串[]indexArray={“HELLO”,“NR”};
List excludedNames=Arrays.asList(namestookfor);
用于(字符串s:索引阵列){
如果(!excludedNames.contains)){
系统输出打印项次;
}
}

将只输出“HELLO”。

如果您使用的是java8,则可以执行以下操作

List<String> list = Arrays.asList(namesToLookFor);
Arrays.stream(indexArray)
        .filter(item -> !list.contains(item))
        .forEach(System.out::println);
List List=Arrays.asList(namestookFor);
Arrays.stream(indexArray)
.filter(项->!list.contains(项))
.forEach(System.out::println);
//将数组放入集合以获得更好的性能
Set namesToFilter=newhashset(Arrays.asList(“NR”、“STAFFELNR”);
字符串[]indexArray=indexReader.readLine().split(“;”);
//使用未筛选的值创建列表并删除不需要的值
列表结果列表=新的ArrayList(indexArray);
结果列表removeAll(名称过滤器);
//你想怎么做就怎么做
for(字符串s:resultList)
系统输出打印项次;

使用
数组
可以使用
包含
函数,但将其转换为
数组列表
后,
包含
函数将检查
数组列表
是否包含特定值

for (int i =0; i<indexArray.length; i++) {
        if (!Arrays.asList(namesToLookFor).contains(indexArray[i])) 
            System.out.println(indexArray[i]);
    }

for(int i=0;我建议使用集合而不是数组,然后您可以区分集合对象
数组。asList(namestookfor)
在循环内部将创建许多不需要的对象。您应该将其放在循环之前并重新使用
for (int i =0; i<indexArray.length; i++) {
        if (!Arrays.asList(namesToLookFor).contains(indexArray[i])) 
            System.out.println(indexArray[i]);
    }