【Java基礎】集合(1) —— Collection

  • 存儲不同類型的對象:
    • Object[] arr=new object[5];
    • 數組的長度是固定的, 添加或刪除數據比較耗時
  • 集合:
    • Object[] toArray
    • 可以存儲不同類型的對象
    • 隨著存儲的對象的增加,會自動的擴容
    • 集合提供了非常豐富的方法,便于操縱
    • 集合相當于容器,可以存儲多個對象
    • 集合存的是對象的引用

在這里插入圖片描述在這里插入圖片描述

每種集合存儲數據的方式不同,使用的數據結構不同,有各自的優缺點

在項目中根據底層的數據結構選擇適合的集合使用。

共性方法

Collection中定義的是最共性的方法:

  1. 添加

    • boolean add(Object o)
      多態集合中存儲的都是對象集合中存儲的是對象的地址
    • boolean addAll(Collection<? extends E> c)
      把另一個集合中的數據加入到當前集合
    Collection col=new ArrayList();
    col.add("java");
    col.add("html");
    col.add("mysql");
    col.add(66);
    Collection col2=new ArrayList();
    col2.add("bigdata");
    col2.add("python");
    col.addAll(col2);
    sop(col);//[java, html, mysql, 66, bigdata, python]
    
  2. 刪除

    • boolean remove(Object o)
      從集合中刪除某個對象
    • boolean removeAll(Collection<?> c)
      從當前集合中刪除和另一個集合相同的數據
    • boolean retainAll(Collection c)
      從當前集合中保留和另一個集合相同的數據
    • void clear()
      清空集合
    • boolean removelf(Predicate predicate) boolean test(T t)
      依次遍歷集合中的每個對象,如果test方法返回true,則刪除這個對象
    //使用匿名內部類實現test方法:
    col.removeIf(new Predicate(){public boolean test(Object t){//參數用來依次接收集合中每個對象if(t instanceof String){String ss=(String)t;if(ss.startsWith("java"))return true;}return false;}
    });
    
    //使用lambda表達式實現test方法:
    col.removeIf(t->{if(t instanceof String){String ss=(String)t;if(ss.startsWith("java"))return true;}return false;
    }); 
    //簡化書寫:
    col.removeIf(t->((String)t).startsWith("java"));
    
  3. 判斷

    • boolean contains(Object o)
      判斷是否包含某個對象
      依據equals方法判斷是否包含某個元素
    import java.util.*;
    class Demo2{public static void main(String[] args){ArrayList list=new ArrayList();list.add(new Student("zhangsan",20));list.add(new Student("lisi",25));list.add(new Student("lisi",25));//姓名年齡相同的認為是同一個對象,去重ArrayList list2 = quChong(list);System.out.println(list2);}//去除集合中重復的元素public static ArrayList quChong(ArrayList list){ArrayList list2=new ArrayList();for(int i=0;i<list.size();i++){Object obj = list.get(i);//判斷新集合中是否包含該元素if(!list2.contains(obj))//依據equals方法判斷是否包含list2.add(obj);}return list2;}
    }
    class Student{………………public boolean equals(Object obj){if(!(obj instanceof Student))throw new ClassCastException("類型不對");Student stu=(Student)obj;return this.name.equals(stu.name)&&this.age==stu.age;}
    }
    
    • boolean containsAll(Collection<?> c)
      判斷是否包含另一個集合中的所有對象
    • boolean isEmpty()
      判斷集合是否為空
    • boolean equals(Object o)
      判斷兩個集合中的對象是否都一致
  4. 獲取

    • Iterator iterator()
      獲取集合中的對象
      在使用迭代器迭代的過程中不允許對集合進行添加,修改,刪除元素
    Iterator ite = col.iterator();//得到集合的迭代器
    while(ite.hasNext()){Object obj = ite.next();//col.add("haah"); //ConcurrentModificationException //在使用迭代器迭代的過程中不允許對集合進行添加,修改,刪除元素System.out.println(obj);
    }
    while(ite.hasPrevious()){Object obj=ite.previous();System.out.println(obj);
    }
    
    • default void forEach(Consumer<? super T> action) void accept(T t) 參數用來依次接收集合中的每個對象
    col.forEach(t->System.out.println(t));
    col.forEach(System.out::println);
    
    • int size()
      獲取集合中對象的個數
  5. 集合變數組

    • Object[] toArray()
      防止被隨意地添加或刪除
  6. 遍歷集合的三種方式

    • Iterator iterator()
    • forEach()
    • 增強的for循環可以用于數組和Collection集合
    for(Object obj:col)
    {System.out.println(obj);
    }
    

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13502.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13502.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13502.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

探索Git之旅:倉庫代碼版本控制藝術

探索Git之旅&#xff1a;倉庫代碼版本控制藝術 引言Git基礎與核心概念什么是版本控制&#xff1f;Git的工作流程分布式特性 Git實戰操作指南安裝與配置克隆倉庫日常操作分支管理解決沖突 高級技巧與最佳實踐Git FlowGit鉤子Git別名 安全與性能考量結語與引發討論 引言 在軟件開…

馮喜運:5.16黃金是否突破阻力?黃金原油趨勢分析

【黃金消息面分析】&#xff1a;周四(5月16日)亞市盤中&#xff0c;現貨黃金延續昨日升勢&#xff0c;金價目前最高觸及2397.44美元/盎司&#xff0c;為4月19日以來新高。FXStreet首席分析師Valeria Bednarik撰文&#xff0c;對黃金技術前景進行分析。Bednarik指出&#xff0c;…

「51媒體」北京財經媒體有哪些?媒體邀約宣傳

傳媒如春雨&#xff0c;潤物細無聲&#xff0c;大家好&#xff0c;我是51媒體網胡老師。 北京作為中國的首都&#xff0c;擁有眾多的財經媒體&#xff0c;這些媒體在財經新聞報道、經濟分析、市場研究等方面發揮著重要作用。根據搜索結果&#xff0c;以下是一些北京地區的財經…

富格林:曝光虛假套路規避虧損

富格林指出&#xff0c;在現貨黃金市場中&#xff0c;交易時間很充足投資機會也多的是&#xff0c;但為什么還是有人虧損甚至爆倉呢&#xff1f;其實導致這種情況&#xff0c;是因為有一些投資者不知道其中的虛假套路&#xff0c;很容易就一頭栽進去了。要規避虛假套路帶來的虧…

CV每日論文--2024.5.15

1、Can Better Text Semantics in Prompt Tuning Improve VLM Generalization? 中文標題&#xff1a;更好的文本語義在提示微調中能否提高視覺語言模型的泛化能力? 簡介&#xff1a;這篇論文介紹了一種新的可學習提示調整方法,該方法超越了僅對視覺語言模型進行微調的傳統方…

Lazyboy品牌發布會“球幕氣膜”

Lazyboy品牌發布會“球幕氣膜”為品牌活動提供了一個獨特、現代化、環保的展示空間。這座球幕氣膜不僅為發布會提供了一個視覺震撼的場地&#xff0c;也為與會嘉賓帶來了全新的體驗。作為輕空間&#xff08;江蘇&#xff09;膜科技有限公司&#xff08;以下簡稱“輕空間”&…

使用Docker在阿里云ECS上部署Gitlab,提供代碼托管、CICD 和 docker鏡像服務

文章目錄 使用Docker在阿里云ECS上部署Gitlab1.購買一個數據&#xff0c;掛載到/data用于存儲gitlab相關數據2. 部署docker引擎3. 調整ssh的默認端口&#xff0c;將22端口留給gitlab4. 部署gitlab5. 進入docker容器獲取gitlab的默認密碼6. 登錄gitlab&#xff0c;完成gitlab-ru…

linux ndk編譯搭建測試

一、ndk下載 NDK 下載 | Android NDK | Android Developers 二、ndk環境變量配置 ndk解壓&#xff1a; unzip android-ndk-r26d-linux.zip 環境變量配置&#xff1a; export NDK_HOME/rd/own/test/android-ndk-r26d/ export PATH$PATH:$NDK_HOME 三、編譯測試驗證 …

虛函數應用和原理

虛函數的表現形式 用子類初始化父類指針, 調用虛函數時, 仍然調用的是子類的虛函數 測試代碼如下 #include <iostream> #include <string.h>using namespace std;class A { public:void test() { cout << a << endl; };virtual void test2 (){ cout …

LeetCode-2589. 完成所有任務的最少時間【棧 貪心 數組 二分查找 排序】

LeetCode-2589. 完成所有任務的最少時間【棧 貪心 數組 二分查找 排序】 題目描述&#xff1a;解題思路一&#xff1a;貪心暴力解題思路二&#xff1a;棧二分查找解題思路三&#xff1a;簡化版 題目描述&#xff1a; 你有一臺電腦&#xff0c;它可以 同時 運行無數個任務。給你…

解鎖電商數據之門:京東商品詳情API接口的深度解析與應用指南

一、京東商品詳情API簡介 京東商品詳情API是京東開放平臺提供的一項服務&#xff0c;允許第三方應用通過調用接口獲取京東商城中商品的詳細信息。這些信息包括但不限于商品名稱、價格、庫存、詳情描述、用戶評價等。 二、功能特點 數據全面&#xff1a;提供商品的全方位數據…

mac安裝兩個版本谷歌瀏覽器;在mac運行不同版本的chrome瀏覽器

場景 正常情況下&#xff0c;mac上只能安裝一個版本的chrome瀏覽器&#xff0c;即使你安裝了兩個版本的&#xff0c;打開老舊版本時候也會自動切換成最新版的瀏覽器 故本文主要解決如何下載和在mac運行不同版本的chrome瀏覽器 文章目錄 場景一、下載1.mac本身就有一個最新版ch…

Java語言saas模式云HIS系統源碼 前端Angular+后臺SpringBoot云HIS系統源碼 HIS系統適合哪些類型的醫院?

Java語言saas模式云HIS系統源碼 前端Angular后臺SpringBoot云HIS系統源碼 HIS系統適合哪些類型的醫院&#xff1f; 云HIS系統&#xff08;醫院信息系統&#xff09;是對醫院及其所屬各部門的人、財、物進行綜合管理&#xff0c;對在醫療活動各階段產生的數據進行采集、儲存、處…

CCF20181201——小明上學

CCF20181201——小明上學 代碼如下&#xff1a; #include<bits/stdc.h> using namespace std; int main() {int r,y,g,n,k[101],t[101],sum0;cin>>r>>y>>g;cin>>n; for(int i0;i<n;i){cin>>k[i]>>t[i];if(k[i]0||k[i]1)sumt[i];…

ITSM的服務臺如何讓工作更流暢

在現代企業的信息技術管理框架內&#xff0c;IT服務管理&#xff08;IT Service Management, ITSM&#xff09;體系扮演著至關重要的角色&#xff0c;而其中的服務臺則是這一復雜體系的心臟地帶。服務臺不僅僅是解答技術疑問的一線窗口&#xff0c;更是企業IT運維效率與用戶滿意…

C++初探_關聯容器

關聯容器將鍵和值關聯在一起&#xff0c;并使用鍵來查找值。STL提供的四種關聯容器&#xff1a; &#xff08;1&#xff09;set 鍵類型與值類型相同&#xff0c;鍵值對一一對應&#xff1b; &#xff08;2&#xff09;multiset 鍵類型與值類型相同&#xff0c;一個鍵可能對…

FENDI CLUB啤酒,為何女生喜歡?

精釀啤酒已經成了女生喜歡的飲品&#xff0c;在日劇《無法成為野獸的我們》里&#xff0c;主人公小晶永遠保持標準笑容&#xff0c;完美完成所有的工作。只有一個人的時候&#xff0c;她才會放下習慣性的微笑&#xff0c;顯露自己的疲憊。小晶緩解疲憊&#xff0c;就是下班后去…

盡微好物:從0到10億+的抖音電商的TOP1“聯盟團長”,如何使用NineData實現上云下云

杭州盡微供應鏈是抖?平臺?均帶貨10E的TOP1“聯盟團?”&#xff0c;是字節跳動?級代理商&#xff0c;巨量千川指定服務商&#xff0c;擁有商品庫9萬&#xff0c;是?業領先的電商供應鏈平臺&#xff0c;達?陪跑機構。 杭州盡微供應鏈以天貓、京東抖音電商業務為依托&#x…

代碼隨想錄Day41(01背包問題):卡瑪網46、Leetcode416

卡瑪網46&#xff1a; 問題描述&#xff1a; 小明是一位科學家&#xff0c;他需要參加一場重要的國際科學大會&#xff0c;以展示自己的最新研究成果。他需要帶一些研究材料&#xff0c;但是他的行李箱空間有限。這些研究材料包括實驗設備、文獻資料和實驗樣本等等&#xff0…

HCIP-Datacom(H12-821)題庫補充(5月16日)

最新 HCIP-Datacom&#xff08;H12-821&#xff09;完整題庫請掃描上方二維碼訪問&#xff0c;持續更新中。 以下關于配置防火墻安全優先級的描述&#xff0c;錯誤的是哪一項&#xff1f; A&#xff1a;不新建與默認安全區域同名的安全區域 B&#xff1a;同一系統中&#xff0c…