Java类集-set
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的更多相关文章
- 浅谈java类集框架和数据结构(1)
在另外一篇博客我简单介绍了java类集框架相关代码和理论. 这一篇博客我主要分析一下各个类集框架的原理以及源码分析. 一:先谈谈LinkedList 这是LinkedList源码的开头,我们能看到几点 ...
- 专题笔记--Java 类集框架
Java 类集框架 1. Java类集框架产生的原因 在基础的应用中,我们可以通过数组来保存一组对象或者基本数据,但数组的大小是不可更改的,因此出于灵活性的考虑和对空间价值的担忧,我们可以使用链表来实 ...
- 浅谈java类集框架和数据结构(2)
继续上一篇浅谈java类集框架和数据结构(1)的内容 上一篇博文简介了java类集框架几大常见集合框架,这一篇博文主要分析一些接口特性以及性能优化. 一:List接口 List是最常见的数据结构了,主 ...
- java:类集操作,多对多的关系
java:类集操作,多对多的关系 //一个课程有多个学生报名, //一个学生可以报名多个课程 demo.java, Student.java, Course.java' public class Co ...
- java:类集操作总结
java:类集操作总结 1.List接口允许有重复的元素,Set接口中不允许有重复的元素 2.ArrayList,和Vector的区别 3.set依靠equals和hashCode区分 4.TreeS ...
- Java类集框架详细汇总-底层分析
前言: Java的类集框架比较多,也十分重要,在这里给出图解,可以理解为相应的继承关系,也可以当作重要知识点回顾: Collection集合接口 继承自:Iterable public interfa ...
- java类集开发中一对多和多对多的关系的实现
摘自<java开发实战经典>李兴华.著 一对多的关系 一个学校可以包含多个学生,一个学生属于一个学校,那么这就是一个典型的一对多关系,此时就可以通过类集进行关系的表示. 在定义Studen ...
- Java -- Java 类集 -- 目录
13.1 认识类集 13.1.1 基本概念 13.1.2 类集框架主要接口 13.2 Collection接口 13.2.1 Collection接口的定义 13.2.2 Collection子接口的 ...
- 5.1 java类集(java学习笔记)Collection、List接口及ArrayList、LinkedList类。
一.类集 类集就是一组动态的对象数组,说类集可能不好理解,类集又称容器,容器顾名思义就是放东西的地方. 类集就是为了让我们更加简洁,方便的存放.修改.使用数据的. 二.Collection接口 我们看 ...
- Java 类集初探
类集 类集:主要功能就是Java数据结构的实现(java.util) 类集就是动态对象数组(链表也是动态数组) Collection 接口* Collection是整个类集之中单值保存的最大 父接口 ...
随机推荐
- Selenium2+python自动化39-关于面试的题【转载】
前言 最近看到群里有小伙伴贴出一组面试题,最近又是跳槽黄金季节,小编忍不住抽出一点时间总结了下, 回答不妥的地方欢迎各位高手拍砖指点. 一.selenium中如何判断元素是否存在? 首先selen ...
- hdu 1411(四面体的体积)
校庆神秘建筑 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- springBoot Feign Hystrix Dashboard
1.引入依赖 <!-- 引入关于 hystrix Dashboard的依赖 --> <dependency> <groupId>org.springframewor ...
- [BZOJ3209]花神的数论题 组合数+快速幂
3209: 花神的数论题 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2498 Solved: 1129[Submit][Status][Disc ...
- HDU 1495 非常可乐【BFS/倒水问题】
非常可乐 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- RMQ问题心得
RMQ(Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j),返回数列A中下标i,j里的最小/大值,即RMQ问题是指求区间最值的问题 ...
- HDU 1391 number steps(找规律,数学)
Starting from point (0,0) on a plane, we have written all non-negative integers 0, 1, 2,... as shown ...
- HDU 1856 More is better (并查集)
题意: 给你两个数代表这两个人是朋友,朋友的朋友还是朋友~~,问这些人组成的集合里面人最多的是多少... 思路: 属于并查集了,我用的是带路径压缩的,一个集合里面所有元素(除了根节点)的父节点都是根节 ...
- 31、Django实战第31天:我的课程
1.编辑usercenter-mycourse.html继承usercenter-base.html 2.编辑users.views.py ... from operation.models impo ...
- luogu P1325 雷达安装
题目描述 描述: 假设海岸线是一条无限延伸的直线.它的一侧是陆地,另一侧是海洋.每一座小岛是在海面上的一个点.雷达必须安装在陆地上(包括海岸线),并且每个雷达都有相同的扫描范围d.你的任务是建立尽量少 ...