当前位置: 首页 > news >正文

集合体学习01

集合体系结构

Collection 单列集合 Map 双列集合

Collection

1.List
1.ArrayList

2.LinkedList

3.Vector

2.Set
1.HashSet
1.LinkedHashSet

2.TreeSet

其中Collection,List,Set 为接口,其余为实现类。

List系列集合:添加的元素是有序,可重复,有索引

Set系列集合:添加的元素是无序,不可重复,无索引

Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承的。

public boolean add(E e)    把给定对象添加到集合中
public void clear()       清空集合中所有元素
public boolean remove(E e)   把给定的目标在当前集合中删除
public boolean contains(Object obj)    判断当前集合中是否包含给定对象
public boolean isEmpty()     判断当前集合是否为空
public int size()      返回集合中的元素个数/集合长度            

注意点:Collection是一个接口,不能直接创建他的对象,所以在学习他的方法时,只能创建他的实现类的对象。

1.添加元素

public class Collection{public static void main(String[]args){Collection<String> coll=new ArrayList<>();coll.add("aaa");System.out.println(coll);//[aaa]}
}

返回值细节:

1.如果我们在往List系列集合中添加数据,那么永远返回true,因为List系列的元素是可重复的。

2.如果我们往Set系列集合中添加数据,如果当前添加的数据不存在则返回值为true,如果数据已经存在则返回值为false,因为Set系列集合是不允许重复的。

2.清空元素

public class Collection{public static void main(String[]args){Collection<String> coll=new ArrayList<>();coll.add("aaa");coll.add("bbb");coll.clear();System.out.println(coll);//[]}
}

3.删除元素

public class Collection{public static void main(String[]args){Collection<String> coll=new ArrayList<>();coll.add("aaa");coll.add("bbb");coll.add("ccc");coll.remove("aaa");System.out.println(coll);//[bbb ccc]}
}

方法会有一个布尔类型的返回值,删除成功返回true,删除失败返回false

如果要删除的元素不存在则删除失败

4.判断元素是否包含

public class Collection{public static void main(String[]args){Collection<String> coll=new ArrayList<>();coll.add("aaa");coll.add("bbb");coll.add("ccc");coll.remove("aaa");boolean result=coll.contains("aaa");System.out.println(result);//false}
}

contains方法底层是依赖equals方法进行判断是否存在,所以如果集合存在自定义对象,也想通过contains进行判断是否存在,那么需要在javabean中重写equals方法。

public class Student{private String name;private int age;public Student(){}public Student(String name,int age){this.name=name;this.age=age;}public String getName(){return this.name;}public int getAge(){return this.age;}public void setName(String name){this.name=name;}public void setAge(int age){this.age=age;}}

import java.util.Collection;
​
public class Collection{public static void main(String[]args){//1.创建集合对象Collection<String> coll=new ArrayList<>();//2.创建三个学生对象Student s1=new Student("zhangsan",23);Student s2=new Student("lisi",24);Student s3=new Student("wanwu",25);//3.把学生对象添加到集合中coll.add(s1);coll.add(s2);coll.add(s3);//4.判断集合中某一个学生对象是否存在Student s4=new Student("zhangsan",23);//如果同姓名同年龄,就认为是同一个学生System.out.println(coll.conains(s4));//false//这里返回值为false,contains方法用equals方法判断对象是否一致//如果是自定义对象,没有重写equals方法,那么默认使用Object类中的equals方法进行判断//Object类中的equals是依赖地址值进行判断的//所以要在自定义的javabean中重写equals类//重写之后System.out.println(coll.contains(s4));//true}
}

public class Student{private String name;private int age;public Student(){}public Student(String name,int age){this.name=name;this.age=age;}public String getName(){return this.name;}public int getAge(){return this.age;}public void setName(String name){this.name=name;}public void setAge(int age){this.age=age;}//equals重写public boolean equals(Object o){if(this==o){return true;}if(o==null||getClass()!=o.getClass()){return false;}Student student=(Student) o;return age==student.age &&Object.equals(name,student.name);}}

5.判断集合是否为空

public class Collection{public static void main(String[]args){Collection<String> coll=new ArrayList<>();coll.add("aaa");coll.add("bbb");coll.add("ccc");boolean result=coll.isEmpty();System.out.println(result);//false}
}

6.获取集合长度

public class Collection{public static void main(String[]args){Collection<String> coll=new ArrayList<>();coll.add("aaa");coll.add("bbb");coll.add("ccc");int size=coll.size();System.out.println(size);//3}
}

相关文章:

  • 写一个标准的项目说明书大纲
  • GitHub工程git merge出现冲突处理方式
  • 接口请求的六种常见方式详解(get、post、head等)
  • C语言:结构体数组
  • FastWeb网站开发之拦截器(interceptor)使用教程
  • 课时151:项目发布_基础知识_技术要点
  • 分布式事务AP控制方案(下)
  • 数据结构之线性表(3)
  • 14. RTCP 协议
  • Kafka的分区副本机制
  • 小熊家务帮day19-day21 订单模块2(取消订单,退款功能等)
  • OBS 录屏软件 for Mac 视频录制和视频实时交流软件 安装
  • 类和对象(上续)
  • 力扣 T62 不同路径
  • leetcode389:找不同
  • 【RocksDB】TransactionDB源码分析
  • github从入门到放弃(1)
  • jdbc就是这么简单
  • MySQL主从复制读写分离及奇怪的问题
  • nodejs:开发并发布一个nodejs包
  • Python打包系统简单入门
  • Redis学习笔记 - pipline(流水线、管道)
  • 二维平面内的碰撞检测【一】
  • 分布式事物理论与实践
  • 汉诺塔算法
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 强力优化Rancher k8s中国区的使用体验
  • 算法---两个栈实现一个队列
  • 协程
  • 学习HTTP相关知识笔记
  • 一道闭包题引发的思考
  • 一个SAP顾问在美国的这些年
  • 赢得Docker挑战最佳实践
  • 用quicker-worker.js轻松跑一个大数据遍历
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • Hibernate主键生成策略及选择
  • !!Dom4j 学习笔记
  • #07【面试问题整理】嵌入式软件工程师
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (C语言)共用体union的用法举例
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (SERIES12)DM性能优化
  • (STM32笔记)九、RCC时钟树与时钟 第一部分
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (六)DockerCompose安装与配置
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)nsfocus-绿盟科技笔试题目
  • .describe() python_Python-Win32com-Excel
  • .net 7和core版 SignalR