《java》笔记<十一>
来源:互联网 发布:c语言培训课 编辑:程序博客网 时间:2024/05/16 23:46
Set
Set集合的功能和Colection是一致的
|--Set:元素是无序的(存入和取出的顺序不一定一致)元素不可以重复
|--HashSet:地城数据是哈希表 线程是非同步的
保证元素唯一的原理:判断元素的hashCode值是否相同
如果相同,还会继续判断元素的equals方法 是否为true
|--TreeSet:可以对Set集合中的元素进行排序
底层数据结构是二叉树
保证元素唯一性的依据
compareTo方法return 0.
TreeSet排序的第一种方式:让元素自身具备比较性
元素需要实现Comparable接口,覆盖compareTo方法
这种方式也成为元素的自然顺序,或者叫做默认顺序
HashSet
Import java.util.*;
class HashSetTest
{
publicstatic void sop(Object obj)
{
System.out.println(obj);
}
publicstatic void main(String[] args)
{
HashSeths = new HashSet();
hs.add(newPerson("a1",11));
hs.add(newPerson("a2",12));
hs.add(newPerson("a3",13));
//hs.add(newPerson("a4",14));
//hs.add(newPerson("a2",12));
//查找元素中是否存在(“a1”,11);
sop("a1:"+hs.contains(newPerson("a1",11)));
Iteratorit = hs.iterator();
while(it.hasNext())
{
Personp= (Person)it.next();
sop(p.getName()+"::"+p.getAge());
}
}
}
class Person
{
privateString name;
privateint age;
Person(Stringname,int age)
{
this.name=name;
this.age=age;
}
//定义hashCode比较
publicint hashCode()
{
System.out.println(this.name+".....hashCode");
returnname.hashCode()+age;
}
//定义equals比较
publicboolean equals(Object obj)
{
if(!(objinstanceof Person))
returnfalse;
Personp = (Person)obj;
System.out.println(this.name+"..equals.."+p.name);
returnthis.name.equals(p.name)&&this.age == p.age;
}
publicString getName()
{
returnname;
}
publicint getAge()
{
returnage;
}
}
TreeSet
import java.util.*;
/*
往TreeSet集合中存储自定义对象学生
想按照学生的年龄进行排序
记住:当主要条件相同时,一定要判断一下次要条件
*/
class TreeSetDemo
{
publicstatic void main(String[] args)
{
TreeSetts = new TreeSet();
ts.add(newStudent("lisi",22));
ts.add(newStudent("lisi01",18));
ts.add(newStudent("lisi03",23));
ts.add(newStudent("lisi0",22));
Iteratorit = ts.iterator();
while(it.hasNext())
{
Studentstr = (Student)it.next();
System.out.println(str.getName()+"...."+str.getAge());
}
}
}
class Student implements Comparable//该接口强制让学生具备比较性
{
privateString name;
privateint age;
Student(Stringname,int age)
{
this.name= name;
this.age= age;
}
publicint compareTo(Object obj)
{
return0;
/*
if(!(objinstanceof Student))
thrownew RuntimeException("不是学生对象");
Students = (Student)obj;
System.out.println(this.name+"...compareto..."+s.name);
if(this.age>s.age)
return1;
if(this.age==s.age)
{
returnthis.name.compareTo(s.name);
}
return-1;
*/
}
publicString getName()
{
returnname;
}
publicint getAge()
{
returnage;
}
}
- Java学习笔记十一
- 《java》笔记<十一>
- java学习笔记(十一)
- java-J2SE学习笔记(十一)
- Java学习笔记(十一)
- Java学习笔记(十一)
- java笔记十一:动态编译
- Java学习笔记(十一)
- java学习笔记(十一)
- JAVA基础笔记(十一)
- java笔记(十一):Collections
- Java培训笔记二十一()
- java学习笔记(二十一)继承
- JAVA学习笔记(十一)连接数据库
- java学习笔记<十一>内部类
- Java笔记十一.集合类(二)
- JAVA学习笔记(十一)- 重载和重写
- JAVA学习笔记(二十一)- 集合 Set
- hive的查询注意事项以及优化总结 .
- 百度地图 (定位、回到定位点)
- 剑指offer第三十三题【两个链表的第一个公共结点】c++实现
- AIX下彻底删除websphere安装文件
- Java_Web乱码问题解决
- 《java》笔记<十一>
- 深入浅出 RPC - 深入篇
- mongodb conf 文件
- You need to use a Theme.AppCompat theme (or descendant) with this activity.
- Nginx下配置网站ssl实现https访问
- 开发数据库篇—FMDB数据库队列
- IOS开发之——绘图(CGContext)
- selenium WebDriver 对浏览器标签页的切换
- oracle存储过程continue