集合总结

集合:容器

集合 : 长度不固定   只能放对象 对象的类型任意
数组 : 长度固定 能放任意类型数据 当初始化的时候固定了数据类型,数组中就只能放这个数据类型的对象

Collection: 接口    有允许重复的 有不允许重复的   有有序的   有无序的


List: 有序 并且允许重复的
ArrayList: 长度可变数组
优点:因为有下标,所以在查找或修改的时候执行效率较高
缺点:增删的时候可能会去移动大量的数据 ,执行效率 相对较低
LinkedList: 双向链表 , 堆栈结构
优点: 在增删的时候不需要移动大量数据, 执行效率相对较高
缺点: 根据 头尾地址存储的前后的元素,在查找的时候执行效率相对较低
Set: 无序并且不允许重复的
HashSet: 哈希表    初始容量是  16  加载因子  0.75
  如何实现的不允许重复?
如果地址相同: 默认的hashcode 和equals就可以 根据地址相同 认为是同一元素  就不存储
地址不相同 内容相同:  重写 hashcode 和  equals方法
    每当加入一条数据的时候   调用hashcode方法,如果hashcode值不相同,则不调用equals 直接存入集合
   hashcode值相同,调用equals方法进一步确认各个属性值是否相同,如果不相同则直接存入集合,如果相同,则不存入集合


LinkedHashSet: 哈希表  链表结构
使用方式和hashset相同,实现不允许重复的方式也相同
不同点: LinkedHashSet 是有序的  利用的链表结构来帮助存储数据顺序的


HashSet 和 LinkedHashSet 不同点:
  1 HashSet无序  LinkedHashSet有序
  2  LinkedHashSet  指向效率相较于  HashSet较低, 需要记录存入顺序
TreeSet: 二叉树  无序   不允许重复的   可排序的
使用特点:
如果泛型中使用的是自定义类型, 类 必须 实现 排序(自然排序,定制排序)
否则,则会报 ClassCastException  类型转化异常
如何实现的不允许重复?
排序重写的方法中如果返回的是 0 则认为是相同元素  则不允许重复

  如何实现排序?
   两种方式:
1 自然排序:
1> 创建需要排序的类   实现 Comparable <需要排序的类型>
2> 重写 compareTo
返回值如果返回0   证明两个对象相同,则不能存入集合
如果返回   1  -1   升序 降序
调用者比参数大 返回1  就是升序
调用者比参数小 返回1  就是降序
      
允许出现  第一条件...第二条件...
3> 创建TreeSet集合 将类放入 TreeSet集合的泛型中
2 定制排序:
1> 创建需要排序的类
2> 创建比较器的类  实现  Comparator  <需要排序的类>
3> 重写 compare方法
   参数 o1 类似于  compareTo方法中的this 也就是调用者
   参数 o2  类似于  compareTo方法中的参数
4> 创建TreeSet集合 泛型< 需要排序的类>     构造方法中  必须传递 比较器对象




Map<K,V>     map集合 与Collection没有任何关系
     K  是 键   不允许重复  无序   只能允许一个null值
V  是  值   允许重复    无序   允许有多个null值


K  和 V  是 映射项关系   一个键 必须对应着一个值


HashMap: 键 不允许重复  无序
     HashMap的键 和  HashSet是一样的     HashSet的底层封装的是HashMap的键
如果重写hashcode 和equals只有  自定义类型放在key的位置的时候才会被调用
TreeMap:  键不允许重复  无序   可排序

TreeMap 如果将自定义类放在 key的位置  ,那这个类必须实现 自然排序或者  定制排序
否则报 ClassCastException



Hashtable


/**
* 面试题

* hashtable hashmap  hashset的区别:
* 1  tashtable 和  hashmap 泛型有两个    以键值对的形式存在的
* hashset只有一个泛型
*  2 hashmap 和  hashset 初始容量  是  16
*      hashtable 是11
*  3 hashmap 的  键 和 hashset 只允许有一个null值
hashtable 键 和  值都不允许出现null值
*  4 hashtable 线程安全的 ,hashmap 线程不安全的
*  
*  5 hashmap 在真正的hashcode的基础之上增加了一些过滤条件
*     hashtable 直接使用的hashcode
*/




Properties: 持久化存储配置信息


Vector : java1.0 使用  ,java2.0 就被List替换了   线程同步的




泛型: 规范
自定义泛型
T type
E  elements
类<E>  写 T  或者 E 都行

就证明这个类具有泛型   类中可以使用泛型作为属性  作为参数


泛型是根据创建 类对象的时候设定的数据类型改变的


    受限制的泛型  类<E extends 限制类>  
  创建对象的时候 泛型中只能放置 限制类 和 限制类的子类 




注意: 有序  是是否存储存入顺序
基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip 个人大四的毕业设计、课程设计、作业、经导师指导并认可通过的高分设计项目,评审平均分达96.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 [资源说明] 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设或者课设、作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96.5分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),供学习参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值