没啥可说的,2中解决方法。
说一些题外话,hashSet的底层是Hashmap,可以看源码。这就是为啥,set是不可重复的,无序的了。
import java.util.Collections;import java.util.HashSet;import java.util.Set;import java.util.UUID;import java.util.concurrent.CopyOnWriteArraySet;/*** 同理可证 : ConcurrentModificationException* //1、Set<String> set = Collections.synchronizedSet(new HashSet<>());* //2、*/public class SetTest {public static void main(String[] args) {Set<String> set = new HashSet<>();// hashmap// Set<String> set = Collections.synchronizedSet(new HashSet<>());// Set<String> set = new CopyOnWriteArraySet<>();for (int i = 1; i <=30 ; i++) {new Thread(()->{set.add(UUID.randomUUID().toString().substring(0,5));System.out.println(set);},String.valueOf(i)).start();}}}
