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

时间:2018-07-09 13:20:12

标签: java algorithm

我有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[]数组中。

4 个答案:

答案 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]);
    }