java集合框架复习----(3)Set
四、set集合
无序、无下标、元素不可重复
1、hashSet【重点】
== 数组+链表+红黑树==
- 基于hashcode计算元素存储位置
- 当哈希吗一样的时候,调用equals,如果为true,拒接存入
package com.zheng.demo3;
import java.util.HashSet;
import java.util.Iterator;
public class MySet {
public static void main(String[] args) {
//创建集合框架
HashSet<String> set = new HashSet<>();
//添加数据
set.add("1-小红");
set.add("2-小明");
set.add("3-小白");
set.add("4-小黑");
set.add("5-小红");
set.add("1-小红");
//迭代器迭代集合元素 遍历
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}

实体类
package com.zheng.demo3;
public class School {
private int id;
private String name;
public School() {
}
public School(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "School{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
package com.zheng.demo3;
import java.util.HashSet;
import java.util.Iterator;
public class TestSet {
public static void main(String[] args) {
//1、创建集合容器
HashSet<School> schools = new HashSet<>();
//创建对象
School school1 = new School(1, "清华大学");
School school2 = new School(2, "北京大学");
School school3 = new School(3, "浙江大学");
//3、放入集合
schools.add(school1);
schools.add(school2);
schools.add(school3);
schools.add(new School(2,"北京大学"));
//4、遍历
Iterator<School> iterator = schools.iterator();
while (iterator.hasNext()){
School school=iterator.next();
System.out.println(school);
}
}
}

2、TreeSet
存储结构:红黑树
- 要实现comparable接口,重写里边的方法,返回0代表元素重复
- 元素不重复
- 元素自动排序
package com.zheng.demo3;
import java.util.Iterator;
import java.util.TreeSet;
public class MyTree {
public static void main(String[] args) {
//1、创建一个集合
TreeSet treeSet = new TreeSet();
//2、加入元素
treeSet.add(1);
treeSet.add(3);
treeSet.add(2);
treeSet.add(4);
treeSet.add(3);
//3、迭代遍历
Iterator iterator = treeSet.iterator();
while (iterator.hasNext()) {
int i = (int) iterator.next();
System.out.println(i);
}
}
}

TreeSet案例:排列字符串的顺序
package com.zheng.demo3;
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
public class MyTreeSet {
public static void main(String[] args) {
//匿名内部类
TreeSet<String> set = new TreeSet<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
int n1 = o1.length() - o2.length();
int n2 = o1.compareTo(o2);
return n1 == 0 ? n2 : n1;
}
});
set.add("he");
set.add("hhhhh");
set.add("jdjdjkdkk");
set.add("djdj");
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}

comparator:定制比较器
java集合框架复习----(3)Set的更多相关文章
- java集合框架复习(一)
数组类Array是java中最基本的一个存储结构,它用于存储 一组连续的对象或一组类型相同的基本类型的数据. Array特点:效率高,但容量固定且无法动态改变, 缺点:无法判断其中存有多少元素,len ...
- java集合框架复习
数组类Array是java中最基本的一个存储结构,它用于存储 一组连续的对象或一组类型相同的基本类型的数据. Array特点:效率高,但容量固定且无法动态改变, 缺点:无法判断其中存有多少元素,len ...
- java集合框架复习----(1)
文章目录 1 .集合框架思维导图 一.什么是集合 二.collection接口 1 .集合框架思维导图 一.什么是集合 存放在java.util.*.是一个存放对象的容器. 存放的是对象的引用,不是对 ...
- java集合框架复习----(4)Map、List、set
文章目录 五.Map集合[重要] 1.hashMap 六.Collections工具类 总结 集合的概念 List集合 set集合: Map集合 Collection 五.Map集合[重要] 特点: ...
- java集合框架复习----(2)List
文章目录 三.List集合 listIterator:迭代器 List实现类 1.泛型类 2.泛型接口 三.List集合 特点 有序,打印输出的顺序和添加时的顺序一致(不会帮你自动排序) 有下标,可以 ...
- 【java集合框架源码剖析系列】java源码剖析之java集合中的折半插入排序算法
注:关于排序算法,博主写过[数据结构排序算法系列]数据结构八大排序算法,基本上把所有的排序算法都详细的讲解过,而之所以单独将java集合中的排序算法拿出来讲解,是因为在阿里巴巴内推面试的时候面试官问过 ...
- Java集合框架List,Map,Set等全面介绍
Java集合框架的基本接口/类层次结构: java.util.Collection [I]+--java.util.List [I] +--java.util.ArrayList [C] +- ...
- Java集合框架练习-计算表达式的值
最近在看<算法>这本书,正好看到一个计算表达式的问题,于是就打算写一下,也正好熟悉一下Java集合框架的使用,大致测试了一下,没啥问题. import java.util.*; /* * ...
- 【集合框架】Java集合框架综述
一.前言 现笔者打算做关于Java集合框架的教程,具体是打算分析Java源码,因为平时在写程序的过程中用Java集合特别频繁,但是对于里面一些具体的原理还没有进行很好的梳理,所以拟从源码的角度去熟悉梳 ...
随机推荐
- 【Maui正式版】创建可跨平台的Maui程序,以及有关依赖注入、MVVM双向绑定的实现和演示
前言:Maui终于在昨天(2022年8月9日)推送出来了.今儿就迫不及待来把玩一下先. A.我本地已有VS2022,不过版本比较老,此处选择更新.工具 -> 获取功能和更新里面,可以获取到新版本 ...
- Windows 电脑杀毒简单有效的方式
Windows 电脑杀毒通常会选择杀毒软件,这样太笨重,且容易占内存和存在流氓软件侵入. 推荐使用 Windows 自带的恶意软件删除工具 按住 Win + R 键,弹出运行窗口,输入 mrt. 系统 ...
- java-面向对象之类、对象
什么是类?什么是对象? 1)现实世界是由很多很多对象组成的基于对象抽出了类 2)对象:真实存在的单个的个体 类:类别/类型,代表一类个体 3)类中可以包含: 3.1)所有对象所共有的属性/特征---- ...
- 【Java】学习路径61-“伪”枚举类型
public class RolyType { public static final int TEACHER = 0; public static final int STUDENT = 1; pu ...
- 不想当Window的Dialog不是一个好Modal,弹窗翻身记
弹窗是我们熟视无睹的一种交互方式,经常用到,但从没好好想过这种交互行为背后的意义... 弹窗是Windows的灵魂 Windows的灵魂是什么?当然是Window,当方便快捷的多窗口进入人们视野的时候 ...
- Python自学笔记11-函数的定义和调用
函数是组织代码的非常有效的方式,有了函数,我们就可以编写大规模的项目.可以说,函数是组织代码的最小单元. Python函数的定义 函数是代码封装的一种手段,函数中包含一段可以重复执行的代码,在需要用到 ...
- xtrabackup增量备份MySQL-5.7操作说明
下载工具 本方法利用xtrabackup二进制包,版本是2.4.26 # 从官网下载二进制包:wget https://downloads.percona.com/downloads/Percona- ...
- ubuntu 安装及配置Apache
一.下载.启动apache2 sudo apt-get install apache2 sudo /etc/init.d/apache2 restart 二.修改配置文件 1.更改网站根目录 sudo ...
- python脚本将json文件生成C语言结构体
1.引言 以前用过python脚本根据excel生成相关C语言代码,其实本质就是文件的读写,主要是逻辑问题,这次尝试将json文件生成C语言的结构体. 2.代码 这是一个json文件,生成这个结构体的 ...
- flutter系列之:flutter中常用的GridView layout详解
目录 简介 GridView详解 GridView的构造函数 GridView的使用 总结 简介 GridView是一个网格化的布局,如果在填充的过程中子组件超出了展示的范围的时候,那么GridVie ...