Set接口是Collection接口的子接口,Set接口中不能插入反复元素

Set接口的经常使用子类:

HashSet是set接口的一个子类。特点:里面不能存放反复元素,并且採用散列的存储方式。所以没有顺序。

Treeset也是set接口的一个子类。特点:里面不能存放反复元素,而且是有序存放

TreeSet是有序存放的。所以须要制定好排序规则,TreeSet中每一个对象所在的类都必须实现Compatable接口才干够正常使用;

packageleiji;

publicclass Person implements Comparable<Person> {

private String name;

private int age;

public Person (String name,int age){

this.name=name;

this.age=age;

}

public String toString(){    //覆写toString方法

return"姓名:"+name+";年龄:"+age;

}

public int compareTo(Person per){  //覆写compareTo方法

if(this.age>per.age){

return 1;

}

else if(this.age<per.age){

return -1;

}

else{

return this.name.compareTo(per.name) ;

}

}

}

packageleiji;

publicclass Personal {

private String name;

private int age;

public Personal (String name,int age){

this.name=name;

this.age=age;

}

public String toString(){    //覆写toString方法

return"姓名:"+name+";年龄:"+age;

}

public boolean equals(Object obj){  //覆写equals方法

if(this==obj){          //推断是不是同一个对象

return true;

}

if (!(obj instanceofPersonal)){ //推断是不是同一个类

return false;

}

Personalp=(Personal)obj;       //进行向下转型

if(this.name.equals(p.name) && this.age==p.age){   //

return true;

}else{

return false;

}

}

public int hashCode(){      //覆写hashCode函数

returnthis.name.hashCode()*this.age;   //指定编码格式

}

}

packageleiji;

importjava.util.Set;

importjava.util.HashSet;

importjava.util.TreeSet;

publicclass Sett {

public static void main(String args[]){

Set<String> allset=new HashSet<String>();

allset.add("A");

allset.add("M");

allset.add("D");

allset.add("F");

allset.add("F");

System.out.println(allset);

Set<String> sortset=new TreeSet<String>();

sortset.add("F");

sortset.add("M");

sortset.add("A");

sortset.add("d");

System.out.println(sortset);

//运用自己定义的类对象作为元素

Set<Person> alls=new TreeSet<Person>();

alls.add(new Person("张三",30));

alls.add(new Person("张三",32));

alls.add(new Person("张三",30));

alls.add(new Person("李四",30));

System.out.println(alls);

//运用自己定义类Personal作为元素 实现HashSet去重功能

Set<Personal> allse=new HashSet<Personal>();

allse.add(new Personal("张三",30));

allse.add(new Personal("李四",30));

allse.add(new Personal("张三",30));

allse.add(new Personal("赵六",30));

allse.add(new Personal("徐峥",30));

System.out.println(allse);

}

}

//一个好的object类最好覆写Object类的HashCode()
equals() toString() 三个方法

Java类集-set的更多相关文章

  1. 浅谈java类集框架和数据结构(1)

    在另外一篇博客我简单介绍了java类集框架相关代码和理论. 这一篇博客我主要分析一下各个类集框架的原理以及源码分析. 一:先谈谈LinkedList 这是LinkedList源码的开头,我们能看到几点 ...

  2. 专题笔记--Java 类集框架

    Java 类集框架 1. Java类集框架产生的原因 在基础的应用中,我们可以通过数组来保存一组对象或者基本数据,但数组的大小是不可更改的,因此出于灵活性的考虑和对空间价值的担忧,我们可以使用链表来实 ...

  3. 浅谈java类集框架和数据结构(2)

    继续上一篇浅谈java类集框架和数据结构(1)的内容 上一篇博文简介了java类集框架几大常见集合框架,这一篇博文主要分析一些接口特性以及性能优化. 一:List接口 List是最常见的数据结构了,主 ...

  4. java:类集操作,多对多的关系

    java:类集操作,多对多的关系 //一个课程有多个学生报名, //一个学生可以报名多个课程 demo.java, Student.java, Course.java' public class Co ...

  5. java:类集操作总结

    java:类集操作总结 1.List接口允许有重复的元素,Set接口中不允许有重复的元素 2.ArrayList,和Vector的区别 3.set依靠equals和hashCode区分 4.TreeS ...

  6. Java类集框架详细汇总-底层分析

    前言: Java的类集框架比较多,也十分重要,在这里给出图解,可以理解为相应的继承关系,也可以当作重要知识点回顾: Collection集合接口 继承自:Iterable public interfa ...

  7. java类集开发中一对多和多对多的关系的实现

    摘自<java开发实战经典>李兴华.著 一对多的关系 一个学校可以包含多个学生,一个学生属于一个学校,那么这就是一个典型的一对多关系,此时就可以通过类集进行关系的表示. 在定义Studen ...

  8. Java -- Java 类集 -- 目录

    13.1 认识类集 13.1.1 基本概念 13.1.2 类集框架主要接口 13.2 Collection接口 13.2.1 Collection接口的定义 13.2.2 Collection子接口的 ...

  9. 5.1 java类集(java学习笔记)Collection、List接口及ArrayList、LinkedList类。

    一.类集 类集就是一组动态的对象数组,说类集可能不好理解,类集又称容器,容器顾名思义就是放东西的地方. 类集就是为了让我们更加简洁,方便的存放.修改.使用数据的. 二.Collection接口 我们看 ...

  10. Java 类集初探

    类集 类集:主要功能就是Java数据结构的实现(java.util) 类集就是动态对象数组(链表也是动态数组) Collection 接口* Collection是整个类集之中单值保存的最大 父接口 ...

随机推荐

  1. Selenium2+python自动化39-关于面试的题【转载】

    前言 最近看到群里有小伙伴贴出一组面试题,最近又是跳槽黄金季节,小编忍不住抽出一点时间总结了下, 回答不妥的地方欢迎各位高手拍砖指点.   一.selenium中如何判断元素是否存在? 首先selen ...

  2. hdu 1411(四面体的体积)

    校庆神秘建筑 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  3. springBoot Feign Hystrix Dashboard

    1.引入依赖 <!-- 引入关于 hystrix Dashboard的依赖 --> <dependency> <groupId>org.springframewor ...

  4. [BZOJ3209]花神的数论题 组合数+快速幂

    3209: 花神的数论题 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2498  Solved: 1129[Submit][Status][Disc ...

  5. HDU 1495 非常可乐【BFS/倒水问题】

    非常可乐 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...

  6. RMQ问题心得

    RMQ(Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j),返回数列A中下标i,j里的最小/大值,即RMQ问题是指求区间最值的问题 ...

  7. HDU 1391 number steps(找规律,数学)

    Starting from point (0,0) on a plane, we have written all non-negative integers 0, 1, 2,... as shown ...

  8. HDU 1856 More is better (并查集)

    题意: 给你两个数代表这两个人是朋友,朋友的朋友还是朋友~~,问这些人组成的集合里面人最多的是多少... 思路: 属于并查集了,我用的是带路径压缩的,一个集合里面所有元素(除了根节点)的父节点都是根节 ...

  9. 31、Django实战第31天:我的课程

    1.编辑usercenter-mycourse.html继承usercenter-base.html 2.编辑users.views.py ... from operation.models impo ...

  10. luogu P1325 雷达安装

    题目描述 描述: 假设海岸线是一条无限延伸的直线.它的一侧是陆地,另一侧是海洋.每一座小岛是在海面上的一个点.雷达必须安装在陆地上(包括海岸线),并且每个雷达都有相同的扫描范围d.你的任务是建立尽量少 ...