如何比较列表和字符串数组(Java)?

如何比较列表和字符串数组(Java)?,java,android,arrays,string,list,Java,Android,Arrays,String,List,我正在为Android编写一个应用程序。我使用字符串数组从共享首选项中提取所有玩家名称(必须是字符串数组)。我有一个列表,可以从共享偏好中提取所有活动玩家(必须是一个列表)。我需要检查我的列表,看看它是否包含任何不在我的玩家数组中的玩家,然后删除他们。我就是搞不懂逻辑 例如: 清单包括: B C A. e 数组包含: A. B C d 由于“e”存在于列表中,但不在数组中,因此需要从列表中删除“e”。我知道命令(.contains(),.remove(),for()),但我就是搞不懂逻辑 我的第

我正在为Android编写一个应用程序。我使用字符串数组从共享首选项中提取所有玩家名称(必须是字符串数组)。我有一个列表,可以从共享偏好中提取所有活动玩家(必须是一个列表)。我需要检查我的列表,看看它是否包含任何不在我的玩家数组中的玩家,然后删除他们。我就是搞不懂逻辑

例如:

清单包括: B C A. e

数组包含: A. B C d

由于“e”存在于列表中,但不在数组中,因此需要从列表中删除“e”。我知道命令(.contains(),.remove(),for()),但我就是搞不懂逻辑

我的第一次尝试是:

for(int x=0;x<numOfPlayers;x++){
        players[x] = getPrefs.getString("player"+Integer.toString(x), " ");
        if(activePlayers.size()>0)
            if(activePlayers.contains(players[x]))
                playersChecked[x] = true;
        else{
            if(x<activePlayers.size())
                activePlayers.remove(x);
        }
    }
for(int x=0;x0)
if(activePlayers.contains(players[x]))
playersChecked[x]=真;
否则{

如果(x你要找的是

仅保留此集合中包含在指定集合中的元素


你要找的是

仅保留此集合中包含在指定集合中的元素


有一点很重要,这会让你的生活变得困难,你的方法会产生不必要的后果。删除一个玩家会改变列表中的元素,因此你最终会跳过玩家

例如,在列表中:

{A,B,C}

如果删除B,则会得到以下结果:

{A,C}

当x增加时,最终的结果是x=3,它过去指向C,但现在它什么也不指向

相反,请研究如何使用迭代器。请参阅:

这将允许您删除元素而不会弄乱索引


因此,为了回答您的问题,我将在ActivePlayer上创建一个迭代器。当您进行迭代时,只需对照列表检查迭代器中的每个项目,如果没有找到,则删除该项目。

一个重要的问题会使您的生活变得困难,您的方法将产生不必要的后果。删除一个播放器将改变元素T在列表中,这样您将跳过玩家

例如,在列表中:

{A,B,C}

如果删除B,则会得到以下结果:

{A,C}

当x增加时,最终的结果是x=3,它过去指向C,但现在它什么也不指向

相反,请研究如何使用迭代器。请参阅:

这将允许您删除元素而不会弄乱索引


因此,为了回答您的问题,我将在ActivePlayer上创建一个迭代器。当您进行迭代时,只需对照列表检查迭代器中的每个项目,如果没有找到,则删除该项目。

将数组元素添加到更适合
包含的
集合中可能是一个更好的主意。欢迎使用StackOverflow,Jay。谢谢,owl开始。我已经享受了多年的好处,认为是时候回馈了。也许将数组元素添加到更适合
包含的
集合中是个更好的主意。欢迎使用StackOverflow,Jay。谢谢,owlstead。我已经享受了多年的好处,认为是时候回馈了。
list.retainAll(Arrays.asList(array));