电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

在Java中Collection的一些常用方法總結

瀏覽:102日期:2022-08-10 17:28:56
Java中Collection的常用方法

1、add() 向中添加元素

add(100) 自動裝箱操作,實際上是放進去的一個對象, Integer n = new Integer(100),實際上是把n放進了

Collection co = new ArrayList();co.add(1);

2、addAll( Collection c )

將指定集合中的所有元素添加到從集合中因為ArryList類中重寫了equals() 方法,所以兩個集合比較相等。

public class lxc { public static void main(String[] args) {Collection c = new ArrayList();for(int i = 0; i < 5; i ++) { c.add(i);}Collection c1 = new ArrayList();c1.addAll(c);System.out.println(c1.equals(c)); // true }}

3、size() 獲取集合中元素個數

Collection co = new ArrayList();int n = co.size();

4、clear() 清空集合

Collection co = new ArrayList();co.clear();

5、contains(100) 判斷當前集合中是否包含100這個元素 返回 true、false

Collection co = new ArrayList();co.add(100);co.add(200);boolean r = co.contains(100); // true

*** 深入探究***

例一:

下邊代碼,new了兩個字符串,s1被添加到集合中去了,但是s2沒有添加進去,最后輸入s2是否在集合當中?分析:按道理來說,s1和s2在棧內存中是兩個變量分別指向了在堆內存中存儲的也是兩個對象,只不過這兩個對象同時指向了 '123' 在常量池中的地址而已,怎么地集合中都不能包含s2啊?下邊我們來看下contains源碼:

public class lxc { public static void main(String[] args) {Collection r = new ArrayList();String s1 = new String('123');r.add(s1);String s2 = new String('123');System.out.println(r.contains(s2)); // true }}

contains()源碼:

參數o是調用contains()方法傳遞的參數,內部調用了indexOf(),而indexof方法內部調用了indexOfRange方法,在這個方法中會去獲取集合中的每一個元素,然后通過equals() 方法來判斷傳遞的參數與集合中的元素是否相等,我們傳的參數是字符串,而字符串的equals()方法在源碼中已經被重寫了,只要字符串值相等就想等,實際判斷的是:s1.equals(s2), 結果相等,返回元素在集合中的索引,而索引一定 >= 0,所以返回true!其實調用contains() 方法,內部是調用equals()方法來判斷的!!!!!!!!!!!!!!!!

在Java中Collection的一些常用方法總結

例二:

下邊知道為什么返回false了吧,Person類的eqauls() 方法繼承的是object對象上的,所以沒有重寫equals() 方法的兩個對象比較自然返回false了。

public class lxc { public static void main(String[] args) {Collection r = new ArrayList();Person p1 = new Person('lxc', 20);r.add(p1);Person p2 = new Person('lxc', 20);System.out.println(r.contains(p2)); // false }}class Person{ String name; int age; public Person(String name, int age) {this.name = name;this.age = age; }}

我們來重寫下Person對象的eqauls() 方法:

public class lxc { public static void main(String[] args) {Collection r = new ArrayList();Person p1 = new Person('lxc', 20);r.add(p1);Person p2 = new Person('lxc', 20);System.out.println(r.contains(p2)); // true }}class Person{ String name; int age; public Person(String name, int age) {this.name = name;this.age = age; } @Override public boolean equals(Object obj) {if(!(obj instanceof Person)) return false;if(this == obj) return true;Person o = (Person) obj;if((this.name == o.name) && (this.age == o.age)) { return true;}return false; }

6、remove() 刪除集合中某個元素

Collection co = new ArrayList();co.remove(100);

****深入探究****

其實remove() 方法和contains() 方法類似,內部也是調用了equals() 方法,所以s1和s2相等,刪除了s2等同于刪除了s1。

public class lxc { public static void main(String[] args) {Collection r = new ArrayList();String s1 = new String('abc');r.add(s1);String s2 = new String('abc');Boolean res = r.remove(s2);System.out.println(res); // 刪除成功了System.out.println(r.size()); // 0 }}

remove源碼:獲取集合中的每一個元素,使用equals() 方法判斷是否相等,如果相等調用fastRemove方法刪除元素。

在Java中Collection的一些常用方法總結

7、isEmpty() 判斷集合是否為空 true、false

co.isEmpty();

8、Object r = col.toArray() 把集合轉數組

9、iterator 迭代器對象 (重點)

xxx.iterator( ); 獲取迭代器。Collection h = new HashSet();Iterator r = h.iterator() 獲取iterator對象,目的遍歷數組 r迭代器對象 - 負責迭代集合當中的元素。

r迭代器對象中的方法: (1)boolean hasNext()如果仍有元素可迭代,則返回true;(2)Object next() 返回迭代的下一個元素。(3)void remove() 沒返回,刪除集合中的元素

public class lxc { public static void main(String[] args) {Collection h = new HashSet();h.add(1);h.add(2);h.add(new Object());// 獲取迭代器Iterator r = h.iterator();while(r.hasNext()) { Object res = r.next(); System.out.println(res);} }}

public class lxc { public static void main(String[] args) {Collection c = new ArrayList();Iterator i = c.iterator();c.add(1);c.add(2);Iterator i1 = c.iterator();while(i1.hasNext()) { Object r = i1.next(); i1.remove(); System.out.println(r);}System.out.println(c.size()); // 0 }}

****重點****

當集合的結構發生改變的時候,迭代器必須重新獲取,如果還是以前老的迭代器,會出現異常。下邊集合的結構發生了改變,結果報錯:

// 報錯:java.base/java.util.ArrayList$Itr.checkForComodificationpublic class lxc { public static void main(String[] args) {Collection c = new ArrayList();Iterator i = c.iterator();c.add(1);c.add(2);while(i.hasNext()) { Object r = i.next(); System.out.println(r);} }}

修改:

public class lxc { public static void main(String[] args) {Collection c = new ArrayList();Iterator i = c.iterator();c.add(1);c.add(2);Iterator i1 = c.iterator();while(i1.hasNext()) { Object r = i1.next(); System.out.println(r);} }}

到此這篇關于在Java中Collection的一些常用方法總結的文章就介紹到這了,更多相關Java Collection常用方法內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 代写标书-专业代做标书-商业计划书代写「深圳卓越创兴公司」 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 开平机_纵剪机厂家_开平机生产厂家|诚信互赢-泰安瑞烨精工机械制造有限公司 | 浙江华锤电器有限公司_地磅称重设备_防作弊地磅_浙江地磅售后维修_无人值守扫码过磅系统_浙江源头地磅厂家_浙江工厂直营地磅 | 郑州外墙清洗_郑州玻璃幕墙清洗_郑州开荒保洁-河南三恒清洗服务有限公司 | 定制液氮罐_小型气相液氮罐_自增压液氮罐_班德液氮罐厂家 | 河南橡胶接头厂家,河南波纹补偿器厂家,河南可曲挠橡胶软连接,河南套筒补偿器厂家-河南正大阀门 | 天品互联-北京APP开发公司-小程序开发制作-软件开发 | 电子万能试验机_液压拉力试验机_冲击疲劳试验机_材料试验机厂家-济南众标仪器设备有限公司 | 蜘蛛车-高空作业平台-升降机-高空作业车租赁-臂式伸缩臂叉装车-登高车出租厂家 - 普雷斯特机械设备(北京)有限公司 | 工业雾炮机_超细雾炮_远程抑尘射雾器-世纪润德环保设备 | 工业冷却塔维修厂家_方形不锈钢工业凉水塔维修改造方案-广东康明节能空调有限公司 | 细砂提取机,隔膜板框泥浆污泥压滤机,螺旋洗砂机设备,轮式洗砂机械,机制砂,圆锥颚式反击式破碎机,振动筛,滚筒筛,喂料机- 上海重睿环保设备有限公司 | 小型UV打印机-UV平板打印机-大型uv打印机-UV打印机源头厂家 |松普集团 | 风淋室生产厂家报价_传递窗|送风口|臭氧机|FFU-山东盛之源净化设备 | 智慧钢琴-电钢琴-便携钢琴-数码钢琴-深圳市特伦斯乐器有限公司 | 太平洋亲子网_健康育儿 品质生活| 金属雕花板_厂家直销_价格低-山东慧诚建筑材料有限公司 | 阻垢剂-反渗透缓蚀阻垢剂厂家-山东鲁东环保科技有限公司 | 屏蔽泵厂家,化工屏蔽泵_维修-淄博泵业| 济南轻型钢结构/济南铁艺护栏/济南铁艺大门-济南燕翔铁艺制品有限公司 | 悬浮拼装地板_篮球场木地板翻新_运动木地板价格-上海越禾运动地板厂家 | 天然鹅卵石滤料厂家-锰砂滤料-石英砂滤料-巩义东枫净水 | 恒温振荡混匀器-微孔板振荡器厂家-多管涡旋混匀器厂家-合肥艾本森(www.17world.net) | 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | AGV叉车|无人叉车|AGV智能叉车|AGV搬运车-江西丹巴赫机器人股份有限公司 | 生产自动包装秤_颗粒包装秤_肥料包装秤等包装机械-郑州鑫晟重工科技有限公司 | 权威废金属|废塑料|废纸|废铜|废钢价格|再生资源回收行情报价中心-中废网 | 合肥防火门窗/隔断_合肥防火卷帘门厂家_安徽耐火窗_良万消防设备有限公司 | 网站建设-临朐爱采购-抖音运营-山东兆通网络科技 | 品牌策划-品牌设计-济南之式传媒广告有限公司官网-提供品牌整合丨影视创意丨公关活动丨数字营销丨自媒体运营丨数字营销 | 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 冲锋衣滑雪服厂家-冲锋衣定制工厂-滑雪服加工厂-广东睿牛户外(S-GERT) | 游泳池设计|设备|配件|药品|吸污机-东莞市太平洋康体设施有限公司 | 二手Sciex液质联用仪-岛津气质联用仪-二手安捷伦气质联用仪-上海隐智科学仪器有限公司 | PSI渗透压仪,TPS酸度计,美国CHAI PCR仪,渗透压仪厂家_价格,微生物快速检测仪-华泰和合(北京)商贸有限公司 | 气体热式流量计-定量控制流量计(空气流量计厂家)-湖北南控仪表科技有限公司 | 耐破强度测试仪-纸箱破裂强度试验机-济南三泉中石单品站 | 预制直埋蒸汽保温管-直埋管道-聚氨酯发泡保温管厂家 - 唐山市吉祥保温工贸有限公司 | 无线联网门锁|校园联网门锁|学校智能门锁|公租房智能门锁|保障房管理系统-KEENZY中科易安 | 杭州网络公司_百度SEO优化-外贸网络推广_抖音小程序开发-杭州乐软科技有限公司 |