22.集合
来源:互联网 发布:指针数组初始化为null 编辑:程序博客网 时间:2024/05/16 07:38
1.Java集合主要有三种重要的类型:
list:是一个有序的集合,可以放重复的数据
set:是一个无序的集合,不允许放重复的数据
map:是一个无序的集合,集合中包含一个键对象,一个值对象,键对象不允许重复,值对象可以重复
2.集合的继承结构图
(Collection部分)
(Map部分)
3.单向链表
4.双向链表
5.collection集合
import java.util.*;public class HelloWorld {public static void main(String[] args) throws Exception{//创建集合Collection c = new ArrayList();//多态//添加元素(collection集合只能存储单个元素,并且只能存储引用类型)c.add(1);//JDK5.0之后,自动装箱 1成为StringCustomer cus =new Customer("JACK",20);c.add(cus);c.add(3.14);c.add(false);//获取元素个数System.out.println(c.size());//清空元素个数//c.clear();//迭代,遍历//获取迭代器对象Iterator it = c.iterator();//迭代器是面向接口编程 //it是引用,保存内存地址//System.out.println(it);//java.util.ArrayList$Itr@15db9742//开始调用方法,完成迭代,遍历while(it.hasNext()) { //调用it.next()方法之前必须调用it.hasNext();Object element = it.next();System.out.println(element);}//判断集合中是否包含某个元素System.out.println(c.contains(3.14));//true contains方法底层调用equals方法 //删除元素c.remove(3.14);}}class Customer{String name;int age;Customer(String name, int age){this.name = name;this.age = age;}}
6.remove和contains方法都需要集合中的元素重写equals方法,
因为Object中的equals方法比较内存地址,在现实业务逻辑中,不能比较
内存地址,该比较内容
(contains)
import java.util.*;public class HelloWorld {public static void main(String[] args) {//创建集合Collection c = new ArrayList();//创建Integer类型的对象Integer i1 = new Integer(10);//添加元素c.add(i1);//判断集合中是否包含i1System.out.println(c.contains(i1));//true//创建Integer类型的对象Integer i2 = new Integer(10);//contains方法底层调用equals方法System.out.println(c.contains(i2));//trueManager m1 = new Manager(100,"gyc");c.add(m1);Manager m2 = new Manager(100,"gyc");System.out.println(c.contains(m2));//false Manager没有重写equals方法,需要重写//所以Mananager中调用的是Object中的equals方法,和“==”作用一样,只会比内存地址}}class Manager{int num;String name;Manager(int num, String name){this.num = num;this.name = name;}//重写equals方法public boolean equals(Object o) {if(this == o)return true;if(o instanceof Manager) {Manager m = (Manager)o;if(m.num == this.num && m.name.equals(this.name)) {return true;}}return false;}}
(remove)
package test;/*remove和contains方法都需要集合中的元素重写equals方法,因为Object中的equals方法比较内存地址,在现实业务逻辑中,不能比较内存地址,该比较内容 */import java.util.*;public class HelloWorld {public static void main(String[] args) {//创建集合Collection c = new ArrayList();//创建Integer类型的对象Integer i1 = new Integer(10);//添加元素c.add(i1);//创建Integer类型的对象Integer i2 = new Integer(10);//删除c.remove(i2);//contains方法底层调用equals方法System.out.println(c.size());//0Manager m1 = new Manager(100,"gyc");c.add(m1);Manager m2 = new Manager(100,"gyc");c.remove(m2);System.out.println(c.size());//0}}class Manager{int num;String name;Manager(int num, String name){this.num = num;this.name = name;}//重写equals方法public boolean equals(Object o) {if(this == o)return true;if(o instanceof Manager) {Manager m = (Manager)o;if(m.num == this.num && m.name.equals(this.name)) {return true;}}return false;}}
7.深入remove
package test;/*深入remove方法 */import java.util.*;public class HelloWorld {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()) {//推荐使用迭代器自身带的remove方法删除元素it.next();//删除it.remove();//通过迭代器删除/*//使用集合自身所带的remove方法删除,不推荐,会报错Object element = it.next();//删除c.remove(element);*/ }}}
阅读全文
0 0
- 22.集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- 集合
- Vue中点击组件外关闭组件的实现方式
- 黑色星期五
- docker中使用tomcat
- 在Activity中调用Service的非静态方法
- uva10462-(带重边次小生成树)
- 22.集合
- OpenCV自学笔记27. Hough变换:检测直线和圆
- [Java 安全]消息摘要与数字签名
- 【查找】二分查找
- POJ 1741 Tree【Tree,点分治】
- 快速入门基础与关键:目标与方向;考证行业基础入门知识与技能————能力测试认证体系
- xGBoost GBDT
- linux内核中的active_mm的作用
- Spark日志分析项目Demo(6)--页面单跳转化率分析