Java中的Set和List都是常見的集合類型,它們有不同的特點(diǎn)和用途。下面我們來一起看看它們的區(qū)別。
Set<E> mySet = new HashSet<>();
List<E> myList = new ArrayList<>();
Set是一種集合類型,它不允許重復(fù)的元素。例如,如果你要存儲(chǔ)一組唯一的數(shù)據(jù),那么就可以使用Set。在Java中,Set的實(shí)現(xiàn)類有HashSet、LinkedHashSet、TreeSet等。HashSet使用散列表的方式進(jìn)行存儲(chǔ),LinkedHashSet則是在HashSet的基礎(chǔ)上保留了插入順序,TreeSet使用紅黑樹的方式進(jìn)行存儲(chǔ),保證元素有序。
mySet.add("apple");
mySet.add("orange");
mySet.add("banana");
mySet.add("apple");
在上面的例子中,我們向Set中添加了4個(gè)元素,但是由于Set不允許重復(fù)元素,這個(gè)Set中只有3個(gè)元素。
List則是另一種集合類型,它可以存儲(chǔ)重復(fù)的元素,并且可以使用索引訪問元素。在Java中,List的實(shí)現(xiàn)類有ArrayList、LinkedList、Vector等。ArrayList使用動(dòng)態(tài)數(shù)組進(jìn)行存儲(chǔ),LinkedList則是使用雙向鏈表,Vector與ArrayList類似,但是是一個(gè)線程安全的集合。
myList.add("apple");
myList.add("orange");
myList.add("banana");
myList.add("apple");
在上面的例子中,我們向List中添加了4個(gè)元素,有兩個(gè)元素是相同的。List可以存儲(chǔ)重復(fù)的元素,所以這個(gè)List中有4個(gè)元素。
綜上,Set和List在使用時(shí)需要考慮自己的需求,如果你需要存儲(chǔ)不重復(fù)的元素,那么就可以使用Set,如果你需要存儲(chǔ)重復(fù)的元素,并且需要使用索引訪問元素,那么就可以使用List。