---恢复内容开始---

            Java开发知识之Java中的集合Set接口以及子类应用

一丶Set接口以及作用

  在上一讲.我们熟悉了接口的实现图.以及自己各有的子类.

  List接口主要存储的数据是可以重复的.并且一个是动态数组 (ArrayList) 一个是链表操作(LinedList)

Set接口:

  Set集合主要的作用就是 Set集合中的对象,不按照特定的方式排序.只是简单的把对象加入到集合中,但是最重要的一点就是.Set集合中不能包含重复的对象.Set集合是个接口,实现了Collection接口.因此Collection接口中的所有方法.Set接口中都要.

二丶Set接口的具体实现类.

  HashSet 跟 TreeSet

两个类分别的作用:

  HashSet:

    HashSet类,实现了Set接口.是由哈希表(HashMap 实例.也就是对象支持的),他不保证Set的迭代顺序.

特别的是他不保证这个顺序是恒久不变的.这个类可以使用Null元素.

  TreeSet:

    TreeSet不仅实现了Set接口,还是先了Java.utio.SortedSet接口,因此TreeSet类实现的Set集合.

在遍历集合的时候.会按照自然顺序递增排序.也可以按照指定的比较器的递增排序.

总结:

    总结来说.两个类一个类是不保证顺序的.一个类是可以按照顺序遍历或者迭代的.(遍历跟迭代一个意思)

1.TreeSet类中的方法

  

firset方法.返回Set集合中第一个元素.或者最低的元素.

last()方法, 返回Set集合中最后一个元素.或者最高的元素.

compareator():就是返回比较器.如果自然排序.就返回null

以上方法就是返回一个新的Set集合. 可以范围返回. 也可以之间返回.

2.使用TreeSet.

  1.建立一个类.实现Comparable泛型接口

  2.此类重写接口中的compareTo方法.

  3.方法中比较.id. 谁大返回谁.

public  class Student implements Comparable<Object> {

    String name;
int id;
public Student(String name,String id) {
// TODO 自动生成的构造函数存根
this.name = name;
this.id = Integer.parseInt(id);
} public int compareTo(Object o) {
// TODO 自动生成的方法存根
Student stu = (Student)o;
int result = this.id > stu.id ? 1:(this.id == stu.id ? 0 : 1);
return 0;
}
  // 以下提供SetGet方法即可,这里不再写了.
}

实现了compareTo方法. 并且判断id. 如果id > 传入对象的Id. 那么就返回1,否则判断是否相等.相等返回0.否则返回1

PS: 这里实现Compareable<>接口的时候.里面需要传入Object

使用TreeSet类.

  使用TreeSet就是将对象存入TreeSet集合中,但是前提就是必须我们的对象必须是上面实现了Compareable<Object>接口的对象才可以. 并且重写了排序方法.这样我们的TreeSet集合才能使用.

  比如我们存储字符串

        //1.使用add方法.添加到集合中.
tree.add("Apple");
tree.add("banale");
tree.add("boy");
tree.add("Girl");
//2.全部遍历
System.out.println("开始进行全部遍历");
java.util.Iterator<String> it = tree.iterator();
while(it.hasNext()) {
String str = (String)it.next();
System.out.println("遍历结果 " + str);
}

添加跟遍历

结果:

Java开发知识之Java中的集合Set接口以及子类应用的更多相关文章

  1. Java开发知识之Java中的集合上List接口以及子类讲解.

    Java开发知识之Java中的集合类 一丶什么是集合类 如果你学习说数据结构,那么学习集合就很简单. 因为集合就是存储数据的结构. 例如 有链表结构 (list ) 还有 map结构.等等. 集合类就 ...

  2. Java开发知识之Java中的Map结构

    Java开发知识之Java中的Map结构 一丶Map接口 Map没有实现Collection接口,提供的是Key 到Value的映射. Map中.不能包含相同的Key,每个Key只能映射一个Value ...

  3. Java开发知识之Java中的泛型

    Java开发知识之Java中的泛型 一丶简介什么是泛型. 泛型就是指泛指任何数据类型. 就是把数据类型用泛型替代了. 这样是可以的. 二丶Java中的泛型 Java中,所有类的父类都是Object类. ...

  4. Java开发知识之Java控制语句

    Java开发知识之Java控制语句 一丶复合语句 不管任何语言都有控制语句 if else if else whie do  while  for .... 首先讲解的是java的复合语句 1.什么是 ...

  5. Java开发知识之Java入门

    Java开发知识之Java入门 一丶了解JAVA的版本 JAVA 有三个版本 JAVA SE: 标准版,开发桌面跟商务应用程序 JAVA SE 包括了Java的核心类库,集合,IO 数据库连接 以及网 ...

  6. Java开发知识之Java的枚举

    Java开发知识之Java的枚举 一丶什么是枚举 枚举可以理解为就是常量,在Java中我们定义常量.都是用 final语句. C++中都是用const关键字. 枚举跟C++概念都是一样的.就是特定的常 ...

  7. Java开发知识之Java的异常处理

    Java开发知识之Java的异常处理 一丶异常概述 在讲解异常之前,我们要搞清楚.什么是异常. 通俗理解就是我们编写的程序出问题了.进行处理的一种手段. 比如我们的QQ.有的时候就崩溃了.比如出现xx ...

  8. Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字

    Java开发知识之Java类的高级特性,内部类.以及包使用.跟常量关键字 一丶Java中包的机制 首先包其实就是个文件夹.作用就是管理类. Java中每次定义一个类的时候.通过Java编译之后.都会生 ...

  9. Java开发知识之Java的继承多态跟接口*

    Java开发知识之Java的继承多态跟接口 一丶继承 1.继承的写法 在Java中继承的 关键字是 extends 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...

随机推荐

  1. 使用Ant Build时提示错误: 编码GBK的不可映射字符

    这个build.xml是由eclipse neon 2016.6生成的 我的情况是,所有文件都使用了UTF-8编码,build.xml第一行也好好写着UTF-8,但build时仍然有乱码,并且提示失败 ...

  2. 20175324王陈峤宇 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结

    20175324王陈峤宇 2018-2019-2<Java程序设计>结对编程项目-四则运算 第一周 阶段性总结 需求分析 这次的结对作业是要求我们利用栈来设计一个计算器. 自动生成四则运算 ...

  3. swust oj 1013

    哈希表(开放定址法处理冲突) 1000(ms) 10000(kb) 2698 / 6177 采用除留余数法(H(key)=key %n)建立长度为n的哈希表,处理冲突用开放定址法的线性探测. 输入 第 ...

  4. win10常用详细快捷键大全

    • 贴靠窗口:Win +左/右> Win +上/下>窗口可以变为1/4大小放置在屏幕4个角落• 切换窗口:Alt + Tab(不是新的,但任务切换界面改进)• 任务视图:Win + Tab ...

  5. High Availability手册(1): 环境

    三台KVM虚拟机 首先我们得有一个pacemaker的环境,需要三台机器,如果没有那么多物理机器,可以用kvm虚拟机 创建一个bridge ovs-vsctl add-br ubuntu_br ifc ...

  6. Hadoop 集群安装(从节点安装配置)

    1.Java环境配置 view plain copy sudo mv /tmp/java /opt/ jdk安装完配置环境变量,编辑/etc/profile: view plain copy sudo ...

  7. 安卓开发学习笔记(四):Android Stuidio无法实现隐式Intent是为什么?

    一.首先检查我们的代码: FirstActivity.java(主活动程序当中的代码):Button3监听器后面的代码就是我们隐式Intent的业务逻辑所在了,大家可以往下面看看,大概在代码的第57行 ...

  8. FFmpeg 结构体学习(一): AVFormatContext 分析

    在 FFmpeg 学习(六):FFmpeg 核心模块 libavformat 与 libavcodec 分析 中,我们分析了FFmpeg中最重要的两个模块以及重要的结构体之间的关系. 后面的文章,我们 ...

  9. [Swift]LeetCode62. 不同路径 | Unique Paths

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  10. [Swift]LeetCode120. 三角形最小路径和 | Triangle

    Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...