java学习初探十三之集合Collection常用方法
来源:互联网 发布:网络连接图片 编辑:程序博客网 时间:2024/05/21 09:56
Collection常用方法
(1)
import java.util.ArrayList;import java.util.Collection;/* boolean add(Object element) 向集合中添加元素 */public class CollectionTest02 { public static void main(String[] args) { //1.创建集合 Collection c=new ArrayList<>(); //2.添加元素 c.add(1); c.add(new Object());//Collection 集合只能单个存储元素,并且只能存储应用类型 Customer cus=new Customer("Jack", 20); c.add(cus); //3.获取元素的个数 System.out.println(c.size());//3 System.out.println(c.isEmpty());//是否为空,false //4.将集合转换成Object类型的数组 Object[] objs=c.toArray(); for(int i=0;i<objs.length;i++) { System.out.println(objs[i]); } //5.清空元素 c.clear(); System.out.println(c.size());//0 System.out.println(c.isEmpty());//是否为空,true }}class Customer{ String name; int age; public Customer(String name,int age) { this.name=name; this.age=age; } //重写Object中的toString public String toString() { return "Customer[name="+name+",age="+age+"]"; }}
(2)Iterator iterator();获取集合所依赖的迭代器对象,通过迭代器中的方法完成集合的迭代(遍历)
注意,这种方法是所有集合通用的遍历方法。
import java.util.Collection;import java.util.Iterator;import java.util.LinkedList;public class CollectionTest03 { public static void main(String[] args) { //创建集合对象 Collection c=new LinkedList<>(); //添加元素 c.add(100); c.add(3.14); c.add(false); //迭代,遍历 //1.获取迭代器对象 Iterator it=c.iterator();//迭代器是面向接口编程 //it是引用,保存了内存地址,指向堆中的“迭代器”对象 System.out.println(it);//java.util.LinkedList$ListItr@15db9742 ListItr是内部类 //是LinkedList集合所依赖的迭代器 //2.开始调用方法,完成遍历,迭代 while (it.hasNext()) { System.out.println(it.next());//100 3.14 false } /* * boolean b=it.hasNext();判断是否有更多的元素,如果有,返回true * Object o=it.next();将迭代器向下移动一位,并且取出指向的元素 * * 原则:调用it.next()之前,必须调用it.hasNext(); */ for(Iterator it2=c.iterator();it2.hasNext();) { Object object=it2.next(); System.out.println(object);//100 3.14 false } }}
(3)boolean contains(Object o);//判断集合中是否包含某个元素
import java.util.ArrayList;import java.util.Collection;public class CollectionTest04 { public static void main(String[] args) { //创建集合 Collection c=new ArrayList(); //创建Integer类型的对象 Integer i1=new Integer(10); //添加元素 c.add(i1); //判断集合中是否包含i1 System.out.println(c.contains(i1));//true //创建一个Integer类型对象 Integer i2=new Integer(10); //contains底层调用的是equals方法,如果equals返回true,就是包含 System.out.println(c.contains(i2));//true Integer这里重写了equals方法,比较的是值 Manager m1=new Manager(100, "Jack"); c.add(m1); System.out.println(c.contains(m1));//true Manager m2=new Manager(100, "Jack"); System.out.println(c.contains(m2));//false Manager没有重写equals,Object中的equals比较的是内存地址, System.out.println(c.contains(m2));//重写equals后,true。 }}class Manager{ int no; String name; Manager(int no,String name){ this.no=no; this.name=name; } //重写equals方法 //需求规定,如果编号和姓名都相同,则表示同一个Manager public boolean equals(Object o) { if(this==o) return true; if(o instanceof Manager) { Manager m=(Manager)o; if(m.no==this.no&&m.name.equals(this.name)) { return true; } } return false; }}
(4)boolean remove(Object o)
remove和contains方法都需要集合中的元素重写equals方法,因为Object中的equals方法比较内存地址,在现实业务逻辑中不能比较内存地址,该比较内容。
import java.util.ArrayList;import java.util.Collection;public class CollectionTest05 { public static void main(String[] args) { // 创建集合对象 Collection c=new ArrayList(); Integer i1=new Integer(10); //添加元素 c.add(i1); //删除 Integer i2=new Integer(10); c.remove(i2); System.out.println(c.size());//0 Manager m1=new Manager(100, "Smith"); c.add(m1); Manager m2=new Manager(100, "Smith"); c.remove(m2); System.out.println(c.size());//0 因为上面我们重写了equals方法 }}
深入remove。
迭代器的remove方法和集合自身的remove方法
import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public class CollectionTest05 { public static void main(String[] args) { Collection c=new ArrayList<>(); c.add(1); c.add(2); c.add(3); //遍历 Iterator it=c.iterator(); while (it.hasNext()) { it.next();//移动指针到下一位 //通过迭代器删除 it.remove(); } System.out.println(c.size());//0 //下面方式删除会java.util.ConcurrentModificationException异常, //因为Collection中的remove删除会改变Collection,需要新的迭代器, while (it.hasNext()) { Object element=it.next();//移动指针到下一位 //通过迭代器删除 c.remove(element); } System.out.println(c.size()); }}
阅读全文
0 0
- java学习初探十三之集合Collection常用方法
- java学习初探十三之集合
- java学习初探十三之集合—List详解
- java学习初探十三之集合—Set详解
- java学习初探十三之集合—Map详解
- Java学习笔记之集合(一):Collection集合的方法
- Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与Lin
- Java集合类:Collection接口常用方法
- java集合Collection中的常用方法
- java学习脚印:集合(Collection)之接口
- java学习脚印:集合(Collection)之算法
- java--------学习之《集合类 (Collection)》
- Java集合学习之Collection(2)
- java集合学习之Collection(3)
- Java学习笔记之集合Collection&Map
- Java集合之Collection
- Java集合之Collection
- java集合之Collection
- 面试遇到的问题
- HQL数据查询(Hibernate推荐)
- 深度 | 生成对抗网络初学入门:一文读懂GAN的基本原理(附资源)
- vue去掉严格开发,即去掉vue-cli安装时的eslint
- 插入算法
- java学习初探十三之集合Collection常用方法
- Servlet处理一个上传的文件
- 51Nod-1122-机器人走方格 V4
- 电商学习笔记
- jsp中js和java执行顺序
- 继承AppCompatActivity的Activity无法隐藏标题栏
- android surfaceflinger(1)-启动初始化1
- 百度大牛讲机制设计和计算广告学
- 如何为treewidgetitem添加右键菜单