day14集合中的map系列(hashset,treeset)

翻译 2016年08月30日 12:07:44
import java.util.*;


/*
往hashSet集合中存入自定义对象
姓名和年龄相同为同一人,重复元素


*/
class HashSetTest
{
public static void sop(Object obj)
{
System.out.println(obj);
}

public static void main(String[] args) 
{
HashSet hs=new HashSet();


hs.add(new Person("a1",11));
hs.add(new Person("a2",12));
hs.add(new Person("a3",13));
hs.add(new Person("a4",14));


Iterator it=hs.iterator();


while (it.hasNext())
{
Person p=(Person)it.next();
sop(p.getName()+"....."+p.getAge());
}


}
}
class Person
{
private String name;
private int age;
Person(String name,int age)
{
this.name=name;
this.age=age;
}
public int hashCode()
{
return name.hashCode()+age;
}
public boolean equals(Object obj)
{
if (!(obj instanceof Person))
{
return false;
}
Person p=(Person) obj;


return this.name.equals(p.name)&&this.age==p.age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}

}

----------------------------

import java.util.*;
import java.lang.Comparable;
/*


需求:
往treeset集合中存储自定义对象学生。
想按照学生的年龄进行排序。

TreeSet第一种方式
*/
class TreeSetDemo 
{
public static void main(String[] args) 
{
TreeSet ts=new TreeSet();


ts.add(new Student("lisi02",22));
ts.add(new Student("lisi007",20));
ts.add(new Student("lisi09",19));
ts.add(new Student("lisi01",40));

Iterator it=ts.iterator();
while(it.hasNext()) 
{
Student stu=(Student)it.next();
System.out.println(stu.getName()+"..."+stu.getAge());
}
}

}

class Student implements Comparable
{
private String name;
private int age;
Student(String name,int age)
{
this.name=name;
this.age=age;
}
public int compareTo(Object obj)
{
//return 0;1-1
if(!(obj instanceof Student))
throw new RuntimeException("不是学生对象");

Student s=(Student)obj;
if (this.age>s.age) 
return 1;
if (this.age==s.age)
{
return 0;
}
return -1;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
} //该接口强制让学生具有比较性

-----------------------------------

import java.util.*;
/*
TreeSet第二种方式
*/
class Student implements Comparable
{
private String name;
private int age;
Student(String name,int age)
{
this.name=name;
this.age=age;
}
public int compareTo(Object obj)
{
//return 0;1-1
if(!(obj instanceof Student))
throw new RuntimeException("不是学生对象");


Student   s= (Student)obj;


if (this.age>s.age)
return 1;
if (this.age==s.age)
{
return this.name.compareTo(s.name);
}
return -1;
}


public String getName()
{
return name;
}


public int getAge()
{
return age;
}
}

class TreeSetDemo2 
{
public static void main(String[] args) 
{
TreeSet ts=new TreeSet();

ts.add(new Student("lisi02",22));
ts.add(new Student("lisi007",20));
ts.add(new Student("lisi09",19));
ts.add(new Student("lisi01",40));

Iterator it=ts.iterator();
while(it.hasNext()) 
{
Student stu=(Student)it.next();
System.out.println(stu.getName()+"..."+stu.getAge());
}
}
}
class MyCompare implements Comparator
{
public int compare(Object o1,Object o2)
{
Student s1=(Student)o1;
Student s2=(Student)o2;
int num=s1.getName().compareTo(s2.getName());
if (num==0)
{
new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));
/*if(s1.getAge()>s2.getAge())
return 1;
if(s1.getAge()==s2.getAge())
return 0;
return -1;*/
}
return num;
}
}

Set集合,HashSet类,TreeSet类,EnumSet类

Set集合通用知识 Set集合与Collection基本上完全一样,没有提供任何额外的方法。实际上Set就是Collection,只是行为不同(Set不允许包含重复元素) set集合不允许...
  • holandstone
  • holandstone
  • 2014年04月09日 10:17
  • 3443

Map两种遍历方式与TreeSet两种排序依据

集合:可以存储不同类型的多个对象,随着存储对象的个数的增加而自动扩大容量   体系结构: Collection   |----List:存入的对象是有序的,且可以重复           ArrayL...
  • u011007829
  • u011007829
  • 2015年01月28日 21:19
  • 1476

java中的HashSet和TreeSet的区别,以及HashSet导致的内存泄漏详解

Set集合中的元素是无序的,不可重复的。这个接口下有两个常用集合的实现,HashSet和TreeSet。 HashSet HashSet底层用的是哈希表,它把对象根据其哈希值存放到对应的区域里。...
  • xingjiyuan26
  • xingjiyuan26
  • 2015年10月30日 17:43
  • 7615

TreeSet,Hashset,Set集合转为整型数组

TreeSet,Hashset,Set集合转为整型数组; TreeSet集合转为整型数组,Hashset集合转为整型数组,Set集合转为整型数组的方法类似...
  • guyuealian
  • guyuealian
  • 2016年03月27日 11:17
  • 7168

HashSet和TreeSet的区别是什么?

一. 问题 1. HashSet,TreeSet是如何使用hashCode()和equal()方法的 2. TreeMap,TreeSet中的对象何时以及为何要实现Comparable...
  • Micheal100
  • Micheal100
  • 2014年09月15日 07:36
  • 5717

HashSet与TreeSet对重复元素的判断不同之处

转:http://wlt2008-com.iteye.com/blog/1447207 HashSet 的实现其实非常简单,它只是封装了一个 HashMap 对象来存储所有的集合元素,所有放...
  • wxwzy738
  • wxwzy738
  • 2014年12月29日 10:42
  • 1435

HashSet、LinkedHashSet、TreeSet的内部实现简介

在写这篇博客之前,本人已经介绍了HashMap、Linked
  • u014313009
  • u014313009
  • 2014年04月26日 22:14
  • 1103

java中的几种泛型类——HashSet、HashMap、TreeSet、TreeMap,遍历map,排序,HashTable比较

HashSet HashSet泛型类在数据组织上类似于数学上的集合,可以进行“交”、“并”、“差”等运算。 HashSet泛型类创建的对象称为集合,如:     HashSet set =  H...
  • u013159040
  • u013159040
  • 2015年05月08日 09:17
  • 1298

Java集合Set性能分析

Set性能分析HashSet 和 TreeSet HashSet性能要好于TreeSet(特别是最常用的添加、查询元素等操作)原因:因为TreeSet需要额外的红黑树算法维护集合元素的次序。只有需要一...
  • wxc880924
  • wxc880924
  • 2016年09月22日 17:22
  • 603

JAVA数据结构之HashSet和TreeSet总结

Set接口 Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false。 Set判断两个对象相同不是使用==运算符,而是根据equals方法。也就是说,只要两个对象用...
  • dongtao1010
  • dongtao1010
  • 2015年06月17日 11:08
  • 1086
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:day14集合中的map系列(hashset,treeset)
举报原因:
原因补充:

(最多只允许输入30个字)