一.总体分类

  • Collection(包括方法add,remove,contains,clear,size)
  1. List(接口)

      LinkedList

      ArrayList

      Vector---Stack

   2. Set

      HashSet

      TreeSet

  • Map
  1. Hashtable---properties
  2. HashMap
  3. TreeMap

二.集合------Set(无序,不可重复)

  无法获取索引位置,所以遍历时不能用for的普通方法,只能用增强for循环和迭代器。

HashSet hs=new HashSet();

1.HashSet  

HashSet如何判断元素重复呢

  1. 对于每个Object,都有一个HashCode的方法,可以尽量保证每个对象的HashCode值不同
  2. 如果HashCode相同,再比较*.equlas()方法
  3. 如果1 2 都相同,则两元素相同

  我们可以在Student类中重写HashCode和equals的方法

@override
public int hashCode(){
final int prime=31;//源码是定义一个素数用来做乘法
int result=1;
result=prime*result+age;
return result;
}
@override
public boolean equals(Object obj){
if(this==obj)
return true;
}

  例子:谁发了邮件,一个人发了很多次,找谁给我发了邮件。(此时就用到了不重复的hashSet)

2.TreeSet

虽然也是不能重复,也是无序,但是TreeSet的无序是按照自然顺序排放的。并且数据类型必须相同

  1. 字母:a b c字典顺序
  2. 数字:1 2 3 大小顺序
  3. 汉子:自己有自己的想法
  4. 类:需要这个类实现Comparable接口或者自定义比较器
TreeSet ts=new TreeSet();

   方法一:类继承Comparable接口 

@override
public int compareTo(Object o){
Student s=(Student)o;
return s.age-age;
}
//当前类属性-参数类属性------升序,反之,降序
@override
public String toString(){
return "fsadjnfaake";
}

      方法二:用匿名内部类的方式,重写接口的方法

Comparator c=new Comparator(){
@override
public int compare(Object o1,Object o2){
Student s1=(Student)o1;
Student s2=(Student)o2;
return s1.getAge()-s2.getAge();
}
}

  

12集合(2)-----Set的更多相关文章

  1. Java学习日记-12 集合(2)

    一.List<E>接口(超级接口Collection,List比Collection多重载了一些索引作为形参的方法)1.实现类ArrayList\LinkedListArrayList顺序 ...

  2. 12集合(3)-----Map

    一.总体分类 Collection(包括方法add,remove,contains,clear,size) List(接口) LinkedList ArrayList Vector---Stack 2 ...

  3. 12集合(1)-----List

    一.总体分类 Collection(包括方法add,remove,contains,clear,size) List(接口) LinkedList ArrayList Vector---Stack 2 ...

  4. note 12 集合Set

    集合Set +无序不重复元素(键)集 +和字典类似,但是无"值" 创建 x = set() x = {key1,key2,...} 添加和删除 x.add('body') x.re ...

  5. plsql programming 12 集合(忽略, 个人感觉用不到)

    关联数组, 嵌套表, varray 个人并不推荐使用集合, 因为操作有别于普通字段. 集合中每一个元素的数据类型都是相同的, 因此这些元素都是同质的(同质元素) 这一章的内容先忽略吧, 因为个人感觉用 ...

  6. C#面向对象12 集合

    ArrayList和HashTable集合 1.ArrayList集合 ***添加元素 using System; using System.Collections.Generic; using Sy ...

  7. Java中对List集合的常用操作

    目录: list中添加,获取,删除元素: list中是否包含某个元素: list中根据索引将元素数值改变(替换): list中查看(判断)元素的索引: 根据元素索引位置进行的判断: 利用list中索引 ...

  8. Java如何对List集合的操作方法(二)

    4.list中查看(判断)元素的索引: 注意:.indexOf(): 和  lastIndexOf()的不同:   ///*************************************** ...

  9. Java中对List集合的常用操作(转载)

    目录: list中添加,获取,删除元素: list中是否包含某个元素: list中根据索引将元素数值改变(替换): list中查看(判断)元素的索引: 根据元素索引位置进行的判断: 利用list中索引 ...

随机推荐

  1. PDF 补丁丁 0.6.0.3413 版发布(修复提取图片问题,增加自动检查软件更新功能)

    新的测试版修复了提取图片旋转方向错误.遇到格式错误的图片后无法继续提取的问题. 另外增加了自动检查软件版本更新的功能(该功能不上传关于用户的任何个人信息,仅向本博客请求静态的版本信息文件,可在“帮助- ...

  2. Yarn架构详解

    Yarn架构介绍Yarn/MRv2最基本的想法是将原JobTracker主要的资源管理和job调度/监视功能分开作为两个单独的守护进程.有一个全局的ResourceManager(RM)和每个Appl ...

  3. flask 第四章 偏函数 Local空间转时间 myLocalStack RunFlask+request 请求上下文

    1 . 偏函数 (partial) from functools import partial def func(*args,**kwargs): a=args b=kwargs return a,b ...

  4. SoapUI之cookie设置

    一.测试背景: 1)接口测试需要完成注册-->登录-->充值,使用soapui构建好测试用例.设置断言后,运行结果如下: 2)recharge接口运行失败,继续查看该接口具体发送的请求及返 ...

  5. 活代码LINQ——02

    一.复习基础——属性与实例变量 'Fig. 4.8:GradeBookTest.vb 'Create and manipulate a GradeBook object. Module GradeBo ...

  6. 002dayPython学习编码

    由于计算机是美国人发明的,所以计算机最开始只能识别256个字符(ASCII码),而你在计算机中输入中文就会报错 而中国人想让计算机认识中文,就重新编写了一套支持中文的编码(GB2312) 随后由于GB ...

  7. MySQL【文本处理函数】的使用方法

    文本处理函数 名称 调用示例 示例结果 描述 LEFT LEFT('abc123', 3) abc 返回从左边取指定长度的子串 RIGHT RIGHT('abc123', 3) 123 返回从右边取指 ...

  8. 常用的数学函数-S

    // abs — 获取[数值]的绝对值 $; echo abs($int).'<br>'; $float=-2.34; echo abs($float).'<hr>'; //c ...

  9. C++笔记之关键字explicit

    在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换. explicit使用注意事项: explicit 关键字只能用 ...

  10. mongoDB-Cannot change the size of a document in a capped collection:

    简单记录一下: 造成该问题的原因是集合被设置成了 固定集合 .固定集合的数据不能被修改.只能查找-删除-再插入