java - 在 Java 中获取列表中不存在于另一个列表中的下一个项目

标签 java arrays loops arraylist

我正在尝试创建一个函数来获取列表中不在另一个列表中的下一项,同时在到达末尾时循环到列表的开头。

基本上我想要发生的是:

String[] list = new String[]{"apple", "banana", "cherry", "donut", "egg", "fish", "grape"};
List<String> list2 = new ArrayList<String>( Arrays.asList("apple", "cherry", "donut", "fish"));
int index = 4;
System.out.println(nextItem());
System.out.println(nextItem());
System.out.println(nextItem());
System.out.println(nextItem());
System.out.println(nextItem());
//Returns:
//egg
//grape
//banana
//egg
//grape

我尝试过这样做:

public String nextItem() {
    index++;
    if(index == list.size()) index = 0;
    while(list2.contains(list[index])) {
        index++;
        if(index == list.size()) index = 0;
    }
    return list[index];
}

但这不起作用,索引保持不变。

是否有更好的方法来执行此操作/类似的操作,但我不知道?

最佳答案

一些改变,它就像一个魅力:

public class Example {
    String[] list = new String[]{"apple", "banana", "cherry", "donut", "egg", "fish", "grape"};
    List<String> list2 = new ArrayList<>(Arrays.asList("apple", "cherry", "donut", "fish"));
    public int index = 4;

    public static void main(String[] args) {
        new Example().start();
    }

    public void start() {
        for (int i = 0; i < 100000; i++) {
            System.out.println(nextItem());
        }
    }

    public String nextItem() {
        index++;
        if (index == list.length) index = 0;
        while (list2.contains(list[index])) {
            index++;
            if (index == list.length) index = 0;
        }
        return list[index];
    }
}

要点是 index 必须是全局的。

关于java - 在 Java 中获取列表中不存在于另一个列表中的下一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60583615/

相关文章:

java - 查找当年询问最多次数的标签名称并打印计数

Java:在数组中搜索最接近的值

java - 在 Java 中从 Map 分离 Collection 的最佳方法是什么?

java - java中如何将货币格式转换为 double

arrays - 将 var 存储在数组中

java - 让这个循环变得简单(在Java中使用循环打印字母J)

SQL 根据前几行填空数据

arrays - 距数组的编辑距离百分比

java - 下面这段代码的空间复杂度?

java - CodingBat 帮助计算数组中的元素