12集合(2)-----Set
一.总体分类
- Collection(包括方法add,remove,contains,clear,size)
- List(接口)
LinkedList
ArrayList
Vector---Stack
2. Set
HashSet
TreeSet
- Map
- Hashtable---properties
- HashMap
- TreeMap
二.集合------Set(无序,不可重复)
无法获取索引位置,所以遍历时不能用for的普通方法,只能用增强for循环和迭代器。
HashSet hs=new HashSet();
1.HashSet
HashSet如何判断元素重复呢
- 对于每个Object,都有一个HashCode的方法,可以尽量保证每个对象的HashCode值不同
- 如果HashCode相同,再比较*.equlas()方法
- 如果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的无序是按照自然顺序排放的。并且数据类型必须相同。
- 字母:a b c字典顺序
- 数字:1 2 3 大小顺序
- 汉子:自己有自己的想法
- 类:需要这个类实现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的更多相关文章
- Java学习日记-12 集合(2)
一.List<E>接口(超级接口Collection,List比Collection多重载了一些索引作为形参的方法)1.实现类ArrayList\LinkedListArrayList顺序 ...
- 12集合(3)-----Map
一.总体分类 Collection(包括方法add,remove,contains,clear,size) List(接口) LinkedList ArrayList Vector---Stack 2 ...
- 12集合(1)-----List
一.总体分类 Collection(包括方法add,remove,contains,clear,size) List(接口) LinkedList ArrayList Vector---Stack 2 ...
- note 12 集合Set
集合Set +无序不重复元素(键)集 +和字典类似,但是无"值" 创建 x = set() x = {key1,key2,...} 添加和删除 x.add('body') x.re ...
- plsql programming 12 集合(忽略, 个人感觉用不到)
关联数组, 嵌套表, varray 个人并不推荐使用集合, 因为操作有别于普通字段. 集合中每一个元素的数据类型都是相同的, 因此这些元素都是同质的(同质元素) 这一章的内容先忽略吧, 因为个人感觉用 ...
- C#面向对象12 集合
ArrayList和HashTable集合 1.ArrayList集合 ***添加元素 using System; using System.Collections.Generic; using Sy ...
- Java中对List集合的常用操作
目录: list中添加,获取,删除元素: list中是否包含某个元素: list中根据索引将元素数值改变(替换): list中查看(判断)元素的索引: 根据元素索引位置进行的判断: 利用list中索引 ...
- Java如何对List集合的操作方法(二)
4.list中查看(判断)元素的索引: 注意:.indexOf(): 和 lastIndexOf()的不同: ///*************************************** ...
- Java中对List集合的常用操作(转载)
目录: list中添加,获取,删除元素: list中是否包含某个元素: list中根据索引将元素数值改变(替换): list中查看(判断)元素的索引: 根据元素索引位置进行的判断: 利用list中索引 ...
随机推荐
- python3.6.3安装步骤,适用linux centos系统
step1: yum -y install gccyum install zlib zlib-devel step2: cd /usr/bin/ mv python python.bak step3: ...
- bzoj1688
题解: 暴力枚举生哪一些病 然后判断一下即可 代码: #include<bits/stdc++.h> using namespace std; ,D=; int d,k,n,a[N][D] ...
- 将本地项目部署到github远程仓库
近期写了一些项目,想把项目代码保存并分享出来,所以就想到了github. 下面就为大家介绍部署过程: 安装git客户端,请大家百度自行下载,这里就不做介绍了. 注册github账号,这个很简单,这里就 ...
- [jQuery]判断checkbox是否选中的3种方法
方法一: if ($("#checkbox-id")get(0).checked) { // do something } 方法二: if($('#checkbox-id').is ...
- css制作倒三角
布局div,并命名为id="dropdown",在style使用border属性对div进行控制 #dropdown{ width:0px; height:0px; border- ...
- <转载> UE4的Actor类C++简单尝试
原文链接: 简书小小酥XX https://www.jianshu.com/p/2bcc80f0e789 一开始我用了一段时间UE4,发现如果用蓝图系统真的不太适合我的风格.因为之前一直都是用Un ...
- 1.5 select编写
1.with:用于指定临时命名的结果 2.select A from B 在B中查看A 3.into 插入语句 例如:select A.B into 表1 from 表2 4.where 指定搜 ...
- java proxy 转包
package org.rx.socks.proxy; import io.netty.channel.Channel; import io.netty.channel.ChannelFuture; ...
- 前端特效demo | 值得收藏的6个 HTML5 Canvas 实用案例
HTML5 动画在Canvas 上得到了充分的发挥,我们 VIP 视频也分享过很多相关的动画特效制作视频,这次给大家带来 6 款超炫酷的HTML5 canvas 动画的 demo,一起来看看吧~ 文内 ...
- 浅谈requireJS 摘自http://www.cnblogs.com/giggle/p/5436710.html
项目中大都使用模块化开发,requireJS作为AMD模块开发的典范,所以有必要学习下.通过一步步利用requireJS编写demo,从而学习requireJS的一个整体开发流程以及自我使用requi ...