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

rph*_*101 1 java arrays string android list

我正在为Android编写应用程序.我使用字符串数组从共享首选项中提取所有播放器名称(必须是字符串数组).我有一个列表,可以从共享首选项中提取所有活跃的玩家(必须是一个列表).我需要检查我的列表,看它是否包含任何不在我的播放器阵列中的播放器并删除它们.我似乎无法弄清楚逻辑.

例如:

列表包含:b c a e

数组包含:a b c d

由于'e'存在于List中而不存在于Array中,因此需要从列表中删除'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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是如果player [x]有一个activePlayers没有的项目,这会从activePlayers中删除x,这很好.它需要反过来.

old*_*inb 11

你在寻找什么Collection.retainAll.

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

list.retainAll(Arrays.asList(array));
Run Code Online (Sandbox Code Playgroud)