Collection中Set集合在应用中常见的方法和注意点
Set集合 : 元素无序的,元素不允许重复。
---->HashSet : 存值方式使用哈希表来存值的。
原理 : 如果HashSet中存放对象 ,首先会调用对象的hashCode方法获取到哈希值,通过哈希值做移为等运算,
计算出元素在哈表中存储的位置。
情况一:如果算出的位置没有任何元素,可以直接将对象存放在该位置。
情况二:如果算出的位置存在元素,这个时候会调用将要存入的元素的equals方法和已经存在的元素做对比,
如果equals返回的是true那么就表示是重复元素,如果equals返回的是false直接将元素一样保存在该位置。
---->TreeSet : 里面存放的元素会根据自然顺序进行排序。
使用注意点:
1.如果添加的元素存在自然排序的特性,那么存入的元素就会通过自然排序进行排序。
2.如果添加的元素,不具备自然排序的特性,那么着个时候必须要实现Comparable接口,将元素的比较规则定义到ComparTo方法中
comparTo的比较规则: 返回一个0,负数或正数 ,分别表示相等,小于和大于。
3.如果添加的元素,不具备自然排序的特性,又没有实现Comparable接口 ,这个时候需要写在创建TreeSet对象是传一个比较器。
比较器的定义方式:
自定义一个类实现:Comprator接口
同实现Comprator中compar(Object o1 ,Objecto1)来指定元素比较的规则。
规则:返回一个0,负数或正数 ,分别表示相等,小于和大于。
TreeSet:底层是使用二叉树来存放数据的。
转载于:https://www.cnblogs.com/houjiie/p/6121891.html
Collection中Set集合在应用中常见的方法和注意点相关推荐
- java中的集合框架_JAVA中的集合框架(上)List
第一节 JAVA中的集合框架概述 集合的概念,现实生活中:很多事物凑在一起就是一个集合:数学中的集合:具有相同属性事物的总体:JAVA中的集合:是一种工具类,就像是容器,储存任意数量的具有共同属性的对 ...
- Java中List集合去除重复数据的六种方法
方法1 循环list中的所有元素然后删除重复 public static List removeDuplicate(List list) { for ( int i = 0 ; i < list ...
- Java入门第三季——Java中的集合框架(中):MapHashMap
1 package com.imooc.collection; 2 3 import java.util.HashSet; 4 import java.util.Set; 5 6 /** 7 * 学生 ...
- python中的集合类型_Python中的集合类型知识讲解
>>> s.add('z') >>> s set(['c', 'e', 'h', 'o', 'p', 's', 'z']) >>> s.updat ...
- java list map 去重复_Java中List集合去除重复数据的六种方法
1. 循环list中的所有元素然后删除重复 public static List removeDuplicate(List list) { for ( int i = 0 ; i < list. ...
- 【慕课笔记】第五章 JAVA中的集合框架(中) 第1节 MapHashMap简介
第1节 Map&HashMap简介 Map接口 Map提供了一种映射关系,其中的元素是以键值对的形式存储的,能够实现根据key快速查找value Map中的键值对以Entry类型的对象实例形式 ...
- java 中map_Java中Map集合
1. Java中Map集合 1. Map中value可以重复,key不能重复.对于重复的key值来说,后放置的值对覆盖前放置的值. import java.util.HashMap; public c ...
- java list 前100个_实现java 中 list集合中有几十万条数据,每100条为一组取出
解决"java 中 list集合中有几十万条数据,每100条为一组取出来如何实现,求代码!!!"的问题. 具体解决方案如下: /** * 实现java 中 list集合中有几十万条 ...
- 浅入深出之Java集合框架(中)
Java中的集合框架(中) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到浅入深出之Java集合框架(下). ...
最新文章
- 协程asyncio_Python 异步模块 asyncio 中的协程与任务
- Spring的核心机制依赖注入,Junit测试与Java基础Getter和Setter两种方法意义——2017.07.26...
- 小程序底部弹窗css_微信小程序之animation底部弹窗动画(两种方法)
- 程序员常见保健方法【转贴】
- 在jsp页面下, 让eclipse完全支持HTML/JS/CSS智能提示
- 数据网站(数据集的获取)、打分网站
- 什么平台给了社区站长机会
- 楼下邻居是事逼怎么办
- 柳絮飘,往事忆:前言
- pytorch历史版本下载_Pytorch、Anaconda安装、Navidia版本更新
- 【ChatGPT】GPT-4
- 为什么电子邮件的账号地址公司是统一的,电子邮件地址该怎么写?
- Mac上iPad Pro高清桌面动态壁纸
- vmware 虚拟机启动失败, Intel VT-x 处于禁用状态
- android 默认启动器,安卓启动器_安卓默认启动器如何替换?
- CentOS: Kernel panic - not syncing: Fatal exception
- php 对图片缩放,php 图片等比例缩放和截图
- 黄聪:黄金分割——设计师的设计利器
- 四:es聚和函数Aggregations
- 像学画画一样的学程序研发
热门文章
- 1837Balance
- delphi 的一些备忘
- C#学习日志三(流程控制语句)
- vuecli3+webpack4优化实践(删除console.log和配置dllPlugin)
- java api使用ElastichSearch指南
- SpringEL expression:
- IOS 为UILabel添加长按复制功能
- Linux(Fedora21)安装google chrome浏览器
- 关于webstorm 配置 banbel
- javax.servlet.jsp.JspTagException: