我们经常说List是有序可重复的,Set是无序不可重复的,其实这是一个误区,我们这里指的有序和无序是说我们遍历输出以后元素的输出顺序是够和我们添加顺序一致。
因为List是基于数组实现的,每个元素都有其对应的索引,所以添加顺序自然不会变,怎么添加最后就会怎么输出,而且也不会判定是否有重复的问题,你添加什么元素,我只管往集合中塞就行了,所以也是可以存在null值的。
而Set则不同,我们通常说的Set是无序的指的是HashSet,因为HashSet是根据其Hash值排序的,所以它不一定是元素添加的顺序,而LinkedHashSet是可以保证元素添加的自然顺序的,TreeSet可以保证元素的自然顺序,有关不可重复的问题,是根据自身的equals比较的,其中TreeSet在插入元素的时候不能存储null值,因为在插入元素时要用到compareTo方法,一旦有null会出现空指针异常,而HashSet是可以存储null值的。