《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;

         }

 

 

}

0 0
原创粉丝点击