Getting error with sublist

I make a team of 4 players and asked to use a sublist. Here is the list:

/** * The list of players in this team. */ private final static List<Player> players = new LinkedList<Player>(); /** * A list of players in the waiting room. */ private final static List<Player> waitingPlayers = new LinkedList<Player>(); 

I get this error:

 java.util.ConcurrentModificationException [11/25/11 3:36 PM]: at java.util.SubList.checkForComodification(Unknown Sour ce) [11/25/11 3:36 PM]: at java.util.SubList.listIterator(Unknown Source) [11/25/11 3:36 PM]: at java.util.AbstractList.listIterator(Unknown Source) [11/25/11 3:36 PM]: at java.util.SubList.iterator(Unknown Source) [11/25/11 3:36 PM]: at java.util.AbstractCollection.contains(Unknown Source) [11/25/11 3:36 PM]: at java.util.AbstractCollection.removeAll(Unknown Source) 

indicated here.

 public static void enterGame(final Client c) { if(waitingPlayers.size() < 4) { c.sendMessage("Waiting for 4 players"); return; // not enough players } // Picks 4 ppl from the list System.out.println("Starting new game"); Collections.shuffle(waitingPlayers); System.out.println("Picking random players"); final List<Player> picked = waitingPlayers.subList(0, 4); players.addAll(picked); waitingPlayers.removeAll(picked); if(players.contains(c)) { c.sendMessage("Your on a team!"); } } 
+4
source share
1 answer

A sublist becomes invalid when the original source list changes. Make a copy, for example, using

 List<Player> picked = new ArrayList<Player>(waitingPlayers.subList(0,4)); waitingPlayers.removeAll(picked); 
+11
source

Source: https://habr.com/ru/post/1383139/


All Articles