List和Set是Java集合框架中常用的兩種數(shù)據(jù)結(jié)構(gòu),用來存儲一組元素,但它們的查詢效率有所不同。
在List中,元素按照插入的順序排列,可以根據(jù)下標(biāo)直接訪問某個(gè)元素,因此查詢某個(gè)元素的效率比較高。示例代碼如下:
List<String> list = new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("pear"); System.out.println(list.get(1)); //輸出"banana"
而在Set中,元素不按照插入的順序排列,而是按照元素的hashCode值進(jìn)行存儲,因此不能根據(jù)下標(biāo)直接訪問元素。但是,Set的查詢效率比List要高,因?yàn)樗褂霉1磉M(jìn)行存儲,可以快速定位某個(gè)元素是否存在。示例代碼如下:
Set<String> set = new HashSet<>(); set.add("apple"); set.add("banana"); set.add("pear"); System.out.println(set.contains("banana")); //輸出true
綜合來說,如果需要按照順序存儲一組元素,并且需要頻繁根據(jù)下標(biāo)訪問元素,那么應(yīng)該選擇List;如果不需要按照順序存儲元素,但需要頻繁查詢元素是否存在,那么應(yīng)該選擇Set。