Java中List列表去重有序和無序的6種方法
前置知識(shí)
正式開始之前,先來搞懂兩組概念:無序集合和有序集合 & 無序和有序。因?yàn)榻酉聛淼姆椒▽?shí)現(xiàn)中,會(huì)反復(fù)提及這兩組概念,所以有必要在正式開始之前,先把它們搞清楚。
無序集合
無序集合是指,數(shù)據(jù)讀取的順序和數(shù)據(jù)插入的順序是不一致的。例如,插入集合的順序是:1、5、3、7,而集合的讀取順序竟然是:1、3、5、7。
有序集合
有序集合的概念和無序集合的概念正好相反,它是指集合的讀取順序和插入順序是一致的。例如,插入數(shù)據(jù)的順序是:1、5、3、7,那么讀取的順序也是:1、5、3、7。
有序和無序
通過上面的無序集合和有序集合,我們可以得出有序和無序的概念。 有序指的是數(shù)據(jù)的排列順序和讀取順序符合我們的預(yù)期就叫做有序。而無序指的是數(shù)據(jù)的排列順序和讀取順序不符合我們的預(yù)期就叫做無序。
PS:如果對(duì)于有序和無序的概念不是很清楚也沒關(guān)系,通過下面的事例,我們可以進(jìn)一步的理解它們的含義。
待去重列表
// 列表 List<String> list = new ArrayList<>(); list.add("Tom"); list.add("Jack"); list.add("Steve"); list.add("Tom"); System.out.println(list); // [Tom, Jack, Steve, Tom]
HashSet去重(不保證順序)
// 去重 Set<String> set = new HashSet<>(list); List<String> newList = new ArrayList<>(set); System.out.println(newList); // [Tom, Steve, Jack]
TreeSet去重(不保證順序)
// 去重 Set<String> set = new TreeSet<>(list); List<String> newList = new ArrayList<>(set); System.out.println(newList); // [Jack, Steve, Tom]
LinkedHashSet去重(保證順序)
// 去重 Set<String> set = new LinkedHashSet<>(list); List<String> newList = new ArrayList<>(set); System.out.println(newList); // [Tom, Jack, Steve]
遍歷List去重(保證順序)
// 去重 List<String> newList = new ArrayList<>(); for (String value : list) { if(!newList.contains(value)){ newList.add(value); } } System.out.println(newList); // [Tom, Jack, Steve]
Java8中Stream流處理(保證順序)
// 去重 List<String> newList = list.stream().distinct().collect(Collectors.toList()); System.out.println(newList); // [Tom, Jack, Steve]
參考文章
到此這篇關(guān)于Java中List列表去重有序和無序的6種方法的文章就介紹到這了,更多相關(guān)Java中List列表去重內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java對(duì)象池管理方式common-pool2使用
這篇文章主要為大家介紹了java對(duì)象池common-pool2使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05Springboot接口項(xiàng)目如何使用AOP記錄日志
這篇文章主要介紹了Springboot接口項(xiàng)目如何使用AOP記錄日志,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06java?CompletableFuture異步任務(wù)編排示例詳解
這篇文章主要為大家介紹了java?CompletableFuture異步任務(wù)編排示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11Java控制臺(tái)實(shí)現(xiàn)猜拳游戲小游戲
這篇文章主要為大家詳細(xì)介紹了Java控制臺(tái)實(shí)現(xiàn)猜拳游戲小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11