Java Collection中set與list介面的差別
本質上來說,List和Set都是接口,且繼承了Collection介面。我們常用到的ArrayList、HashSet分別是繼承了List和Set接口,由於用到了泛型,在實際運用時可以指定實際的型別來使用。通常我們用它們來儲存對象,當然用的比較多的還有Map,它們都提供了插入、刪除和查找的接口,且支援使用Iterator。那麼,List和Set究竟有什麼差別,在使用過程中又該如何區分呢?
List和Set區別
(1)List和Set之間很重要的一個差異是是否允許重複元素的存在,在List中允許插入重複的元素,而在Set中不允許重複元素存在,即使插入相同元素也會進行替換。我分別對ArrayList和HashSet插入相同元素進行了驗證:
HashSet<String> hset = new HashSet<String>(); ArrayList<String> arrlst = new ArrayList<String>(); hset.add("hello"); hset.add("hello"); arrlst.add("hello"); arrlst.add("hello"); System.out.println("hset size: "+hset.size()+" toString: "+hset.toString()); System.out.println("arrlst size: "+arrlst.size()+" toString: "+arrlst.toString());
運行結果:
PS:看JDK原始碼會看到HashSet的實現是透過HashMap來完成的。
java學習影片推薦:java入門
(2)List與Set之間另一個很重要的差異與元素先後存放順序有關。 List是有序集合,而Set是無序集合。 List會保留元素插入時的順序,也就是說之前插入的元素的索引會比之後插入的元素的索引要小。而Set不會保留插入時的順序。同樣,來驗證一下:
HashSet<String> hset = new HashSet<String>(); ArrayList<String> arrlst = new ArrayList<String>(); hset.add("1"); hset.add("3"); hset.add("2"); arrlst.add("1"); arrlst.add("3"); arrlst.add("2"); System.out.println("hset size: "+hset.size()+" toString: "+hset.toString()); System.out.println("arrlst size: "+arrlst.size()+" toString: "+arrlst.toString());
運行結果:
#PS:ArrayList中使用物件數組來儲存對象,每次插入新的物件時會插入到size大小處;至於HashSet,前面說到是透過HashMap來實現的,存入的物件作為HashMap的key,如果key相同會取代value。當然,SortedSet(繼承了Set介面)能夠以指定的排序方式來保存元素。
(3)List可以透過下標來訪問,而Set不能。
List介面常見實作類別有ArrayList、Vector和LinkedList,而Set介面常見實作類別有HashSet、TreeSet和LinkedHashSet。
更多java相關文章推薦:java入門教學
#以上是Java Collection中set與list介面的差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。

CentOS 和 Ubuntu 的關鍵差異在於:起源(CentOS 源自 Red Hat,面向企業;Ubuntu 源自 Debian,面向個人)、包管理(CentOS 使用 yum,注重穩定;Ubuntu 使用 apt,更新頻率高)、支持週期(CentOS 提供 10 年支持,Ubuntu 提供 5 年 LTS 支持)、社區支持(CentOS 側重穩定,Ubuntu 提供廣泛教程和文檔)、用途(CentOS 偏向服務器,Ubuntu 適用於服務器和桌面),其他差異包括安裝精簡度(CentOS 精

Laravel 和 ThinkPHP 都是流行的 PHP 框架,在開發中各有優缺點。本文將深入比較這兩者,重點介紹它們的架構、特性和性能差異,以幫助開發者根據其特定項目需求做出明智的選擇。

CentOS防火牆的狀態可以通過sudo firewall-cmd --state命令查看,返回running或not running。更詳細的信息可以使用sudo firewall-cmd --list-all查看,包括已配置的區域、服務、端口等。如果 firewall-cmd 無法解決問題,可以使用sudo iptables -L -n查看iptables規則。修改防火牆配置前請務必做好備份,以確保服務器安全性。

探討後端開發中的分層架構在後端開發中,分層架構是一種常見的設計模式,通常包括controller、service和dao三層�...

瑞波幣(XRP)由Ripple公司創建,用於跨境支付,快速且費用低,適合小額交易支付。註冊錢包和交易所後,可進行購買和存儲。

随着PHP框架技术的不断发展,Yi2和TP5作为两大主流框架备受关注。它们都以出色的性能、丰富的功能和健壮性著称,但却存在着一些差异和优劣势。了解这些区别对于开发者在选择框架时至关重要。
