----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
package com.yang.ex;
/*------Set:不包含重复元素 ,其中元素师无序的(存入和取出的顺序不一致)
*   |---HastSet:底层数据结构是哈希表
*   是通过元素的两个方法,hastCode和equals来完成
*   如果元素的HashCode值相同,才会判断equals是否为true
*   如果元素的HashCode的值不同,不会调用equals
*   
*   注意:对于判断元素是否存在,以及删除等操作,都依赖方法是,元素的HashCode和equals
*      方法
*      Arraylist去重只依赖equals
*      但是哈希先判断 HashCode
*   |---TreeSet:
* Set集合的功能和Collection是一致的
* 可以对Set集合中的元素进行排序
* 保证元素唯一性的依据是,
* compareTo方法为return 0
* TreeSet排序的第一种方式,让元素自身具备比较性。
* 元素需要实现Compareble接口,覆盖compareableto方法
* 这种方式也成为元素的自然顺序,或者称为默认顺序
*   TreeSet:第二种排序方式。
*   当元素自身不具备比较性是,或者具备的比较性不是所需要的。
*   这是就需要让集合自身具备比较性
*   在集合初始化时,就有了比较方式
* */
public class HashSet {
public static void main(String[] args) {
// TODO Auto-generated method stub
HashSet hashSetdemo=new HashSet();
HashSet hashSetdemo2=new HashSet();
hashSetdemo.hashCode();
hashSetdemo.contains(new Person("a1",11));
System.out.println(hashSetdemo);
System.out.println(hashSetdemo2);
}
class Demo{
public int hashCode() {
return 199;
}
}
}
package com.yang.ex;
/*TreeSet:可以对set集合中的元素进行排序
记住:排序时,请注意次要条件
* 在TreeSet集合中储存自定义对象学生
* 想 按照学生的年龄进行排序
* */
import java.util.Iterator;
import java.util.TreeSet;
import javax.management.RuntimeErrorException;
public class TreeSetDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeSet treeSetDemo=new TreeSet();
treeSetDemo.add(new Student("lisi01",22));
treeSetDemo.add(new Student("lisi02",19));
treeSetDemo.add(new Student("lisi03",20));
treeSetDemo.add(new Student("lisi04",21));
Iterator iterator=treeSetDemo.iterator();
while (iterator.hasNext()) {
Student student=(Student)iterator.next();
System.out.println(iterator.next());
}
}
class Student implements Comparable//该接口强制让学生具有比较性。
{
private String name;
private int age;
Student(String name,int age) {
// TODO Auto-generated constructor stub
this.name=name;
this.age=age;
}
public int compareTo(Object object)
{
if (!(object instanceof Student)) {
throw new RuntimeException("不是学生对象");
}
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
}

package com.yang.ex;
import java.util.Iterator;
import java.util.TreeSet;
import com.yang.ex.TreeSetDemo.Student;
/*
* 当元素自身不具备比较性,或是具备的比较性不是所需要的
* 这时需要让容器自身具备比较性
* 定义了比较器,将比较器对象作为参赛传递给TreeSet参数
* 当两种排序都存在是,以比较器为主
* 定义一个类 实现Comperator接口,覆盖comapare方法。
* */
public static class TreeSetDemo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeSet treeSetDemo=new TreeSet();
treeSetDemo.add(new Student("lisi01",22));
treeSetDemo.add(new Student("lisi02",19));
treeSetDemo.add(new Student("lisi03",20));
treeSetDemo.add(new Student("lisi04",21));
Iterator iterator=treeSetDemo.iterator();
while (iterator.hasNext()) {
Student student=(Student)iterator.next();
System.out.println(iterator.next());
}
}
}
abstract class MyCompare implements Comparable
{
public int compare(Object object1,Object object2) {
Student student=(Student)object1;
Student student2=(Student)object2;
return 1;
}
}package com.yang.ex;
import java.util.Iterator;
import java.util.TreeSet;
/*按照字符串长度进行排序
* 字符串本身具备比较性,但是他的比较方式不是所需要的
* 这时候只能用比较器
* */
public class TreeSetExce {
public static void main(String[] args) 
{
// TODO Auto-generated method stub
TreeSet<String> treeSet=new TreeSet<>();
treeSet.add("abdfsa");
treeSet.add("vfg");
treeSet.add("s");
treeSet.add("hahdhferew");
Iterator<String> iterable=treeSet.iterator();
while (iterable.hasNext()) {
System.out.println(iterable.next());
}
}
}
class StringLengthComperator implements Comparable{
public int compareTo(Object object,Object object2) {
// TODO Auto-generated method stub
String s1=(String)object;
String s2=(String)object2;
if (s1.length()>s2.length()) 
return 1;
if (s1.length()==s2.length()) 
return 0;
return -1;
}
}

----------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------

详情请查看:http://edu.csdn.net/heima

转载于:https://www.cnblogs.com/yzcorange/p/3959993.html

黑马程序员——集合框架(二)相关推荐

  1. 黑马程序员-----集合框架类(四) 高级for循环、方法的可变参数及静态导入

    ------- android培训.java培训.期待与您交流! ---------- 黑马程序员-----集合框架类(四) 高级for循环.方法的可变参数及静态导入 1.1 高级for循环(示例1) ...

  2. 黑马程序员————集合框架1(day14)

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! 集合框架1 l  体系概述 l  共性方法 l  迭代 ...

  3. 黑马程序员——集合框架

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 类集是一个动态对象数组,不受对象数组长度的限制. List集合里面的内容允许重复,Set集合不允 ...

  4. 黑马程序员-MyBatis 框架-最全入门笔记、阿伟看了都得说真大、真细、真全!!!

    MyBaits 写在最前 本篇文章是我学完黑马程序员 JavaWeb MyBatis 的总结分享,定位呢是最大小白友好的快速入门,欢迎大家一起交流技术! 文章目录 MyBaits 代码仓库 MyBat ...

  5. 黑马程序员——集合Collection:体系详述

    ------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培 ...

  6. 黑马程序员--Foundation框架之--NSObject类

    ------IOS培训期待与您交流! ------- OC中的Foundation框架是系统提供的,他就相当于是系统的一套api,其内部有很多现有的类和功能提供给我们使用. 那么今天首先来介绍一下Fo ...

  7. 黑马程序员--Foundation框架之--NSArray类以及它的子类NSMutableArray类

    ------IOS培训期待与您交流! ------- 今天我们继续来看一下Foundation框架中的NSArray类和 NSMutableArray类,NSArray类 是不可变的,NSMutabl ...

  8. 黑马程序员————集合2(day17)

    ----------------------ASP.Net+Android+IOS开发----------------------期待与您交流! 集合2 l  Collections – sort l ...

  9. 黑马程序员-集合(Map)

    ---------------------- ASP.Net+Android+IOS开发..Net培训.期待与您交流! ---------------------- 区分map集合和collectio ...

最新文章

  1. C# 中的常用正则表达式总结
  2. h5 客服系统源码_Bos:做在线客服系统项目(附源码)
  3. 盘点国内外那些有野心的BI公司
  4. 阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_4 请求参数绑定集合类型
  5. 【毕业论文】参考文献的引用格式
  6. 于的繁体字有几种写法_人字繁体字有几种写法
  7. mysql联合主键的坑
  8. 中关村GHOST WIN7 SP1旗舰版
  9. python写出雷霆战机_利用Python自制雷霆战机小游戏,娱乐编程,快乐学习!
  10. python自动下载酷狗音乐_Python下载酷狗音乐
  11. ​卧槽!这世上为什么要有乱码这个东西???
  12. iMeta | 南科大夏雨组纳米孔测序揭示微生物可减轻高海拔冻土温室气体排放
  13. 已知ip地址求子网掩码
  14. cad2014卡顿的解决方法_cad2014画直线卡顿怎么回事
  15. 网易mc显示服务器异常,明日之后:一天之内3次服务器异常,网易果真是“土豆服务器”!...
  16. execl批量创建文件夹乱码解决方案
  17. HW6:物理系统与碰撞
  18. Ubuntu开机界面出现“error found when loading /root/.profile”(修改用户权限)
  19. 无人值守自动安装——PXE(Preboot eXecution Environment)
  20. 软件工程过程和软件系统分析与设计

热门文章

  1. 2.常用的实现多线程的两种方式
  2. Objective-C 执行外部命令
  3. c++入门之初话结构体
  4. BZOJ 2084 [Poi2010]Antisymmetry(manacher)
  5. 博客园写代码发家的大牛
  6. CTreeCtrl 控件实现多选并取得选中项
  7. 8.Struts1.x的防止表单的重复提交
  8. 最大的问题是没有发现问题之一:谈谈滥用继承
  9. c++socket模型之我见
  10. 华丽丽的GridLayout-使用案例