一.总体分类

  • 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. 本地代码上传到git

    1.(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库 git init 2.把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点 ...

  2. mybatis Interceptor拦截器代码详解

    mybatis官方定义:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis ...

  3. MySql5.5安装详细说明

      双击MySql5.5安装文件开始: next 打勾,Next 选Custom,原因如下面所述: Typical(典型安装) Installs the most common program fea ...

  4. Java中常见的分页算法

    在查询数据的时候或者展示数据的时候经常会使用分页,介绍几种简单的分页算法: //总的页数 int total = 30: //每页个数 int pageSize = 6; 1.one     int ...

  5. docker学习端口连接docker容器---第四章节

    一.Docker容器连接 前面的第二章节,我们事先通过网络端口来访问运行在docker容器内的服务,我们也可以通过端口连接到一个docker容器 我们可以指定容器绑定的网络地址,如绑定127.0.0. ...

  6. Jsの练习-数组常用方法 -forEach()

    forEach()  : 对数组进行遍历循环,对数组中的每一项运行给定函数. 格式: arr.forEach(function(value,index){}) <!DOCTYPE html> ...

  7. 2018-2019-2 《网络对抗技术》Exp1 PC平台逆向破解 20165326

    实验一 目录 直接修改程序机器指令,改变程序执行流程 通过构造输入参数,造成BOF攻击,改变程序执行流 注入Shellcode并执行 问题及解决 思想感悟 一.修改机器指令 首先你需要一个pwn1文件 ...

  8. 【转】Android-Input 按键字符映射文件&输入设备配置文件

    https://source.android.com/devices/input/key-character-map-files 按键字符映射文件 按键字符映射文件(.kcm 文件)负责将 Andro ...

  9. makefile笔记7 - makefile函数

    在 Makefile 中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能. make 所支持的函数也不算很多,不过已经足够我们的操作了.函数调用后,函数的返回值可以当做变量来使用. ...

  10. 三星Galaxy S8 刷机经验记录

    这段时间用上了三星S8,由于原生系统太耗电,所以萌生了root的想法.写这篇博客记录下这段时间的各种尝试. Root过程说明: 友情提示,道路千万条,安全第一条.开始捣鼓手机之前请一定准备好官方的救砖 ...