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是整个类集之中单值保存的最大 父接口 ...
随机推荐
- servletcontext.getRealPath()
getRealPath方法已经不建议使用了: http://blog.csdn.net/lzynihao/article/details/8315796 另外:http://veryls.iteye. ...
- poj 2007(凸包)
Scrambled Polygon Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 8005 Accepted: 3798 ...
- [BZOJ2661][BeiJing wc2012]连连看 费用流
2661: [BeiJing wc2012]连连看 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1349 Solved: 577[Submit][ ...
- 《javascript高级程序设计》读书小延伸
这本书已经读了几章了,想着试试能不能做出点东西,就简单的练了把手.觉得对于初学者,自己试着练练,效果还不错的. 挥刀要从轻的开始,起初的原因是和同事谈起曾经的逝水年华(小时候干的坏事)时说起了曾经的一 ...
- CF 1003B Binary String Constructing 【构造/找规律/分类讨论】
You are given three integers a, b and x. Your task is to construct a binary string s of length n=a+b ...
- CF982 C Cut 'em all!【树/DFS/思维】
[链接]:CF982C [题意]:有一颗树,你需要切掉一些边,使这颗树分拆成若干个节点为偶数的联通分量,最多能切掉几条边.若不能切,输出-1. [分析]: 1.若点数n为奇数,因为奇数不可能分为偶数, ...
- 第2天-css快速入门
css是什么 css(cascading style sheet,可以译为“层叠样式表”),是一组格式设置规则,用于控制web页面的外观 如何让一个标签具有样式 第一步:必须保证引入方式正确 第二步: ...
- python 连接数据库练习
#!/usr/bin/python# -*- coding:utf-8 -*-import logginglogging.basicConfig(level=logging.INFO)import m ...
- Servlet规范简介
引言 Web 框架一般是通过一个 Servlet 提供统一的请求入口,将指定的资源映射到这个 servlet, 在这个 servlet 中进行框架的初始化配置,访问 Web 页面中的数据,进行逻辑处理 ...
- [Codeforces 19E] Fiary
Brief Intro: 给定一个无向图,询问删去哪条边能使得剩下的图为一个二分图,输出所有结果 Algorithm: 关于二分图的重要性质:一个图为二分图的充要条件为其中没有奇环 1.如果没有奇环, ...