java第9天代码(集合类)-set

/**********Customer .java   begin***********/

import java.util.HashSet;
import java.util.Set;
/**
 * 如果两个Customer对象nama属性和age属性相同,那么这两个Customer对象相等。
 * @author Administrator
 *
 */
public class Customer {
 
 private String name;
 
 private int age;

 public String getName() {
  return name;
 }

 public int getAge() {
  return age;
 }

 public void setName(String name) {
  this.name = name;
 }

 public void setAge(int age) {
  this.age = age;
 }

 public Customer(String name, int age) {
  super();
  this.name = name;
  this.age = age;
 }
 
 public Customer(){}
    /**
     * 如果Customer类覆盖了Object类中的equals方法,但没有覆盖Object中的HashCode方法,
     * 就会导致当Customer1.equals.(Customer2)为true时,而Customer1和Customer2的哈
     * 希码不一定一样,就会使HashSet无法工作。
     */
 @Override
 public boolean equals(Object obj) {
  if((obj instanceof Customer)){
   Customer other=(Customer) obj;
   if(this.name.equals(other.getName()) && this.age==other.getAge()) {
    return true;
   }
  }
  return false;
  
 }

 /**
  * 为了保证HashSet的正常工作,如果Customer类覆盖了equals方法,同时也应该去覆盖hashCode
  * 方法,并且保证两个相等对象的哈希码也是一样。
  */
// @Override
 public int hashCode() {
  int result;
  result=(name==null?0:name.hashCode());
  result=result+age;
  return result;
 }
 
    public static void main(String args[]){
     Set set=new HashSet();
     Customer cust1=new Customer("mingkun",25);
     Customer cust2=new Customer("mingkun",25);
     set.add(cust1);
     set.add(cust2);
     System.out.println(cust1.hashCode());
     System.out.println(cust2.hashCode());
     System.out.println(cust1.equals(cust2));
     System.out.println(cust1==cust2);
     System.out.println(set.size());
   
    }
 

}
/**********Customer .java end***********/

 

 

/********** CustomerComp .java begin***********/
import java.util.*;

public class CustomerComp implements Comparable {
 
 private String name;
 private int age;
 public String getName() {
  return name;
 }
 public int getAge() {
  return age;
 }
 public void setName(String name) {
  this.name = name;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public CustomerComp(String name, int age) {
  super();
  this.name = name;
  this.age = age;
 }
 public CustomerComp() {}
 
 public int compareTo(Object obj){
  
  CustomerComp other=(CustomerComp) obj;
  
  //先按照name排序
  if(this.name.compareTo(other.getName())>0){
   return 1;
  }
  if(this.name.compareTo(other.getName())<0){
   return -1;
  }
  //再按照age排序
//  if(this.age>other.getAge()){
//   return 1;
//  }
//  if(this.age<other.getAge()){
//   return -1;
//  }
  return 0;
 }

 @Override
 public boolean equals(Object obj) {
  if(!(obj instanceof CustomerComp))return false;
   CustomerComp other=(CustomerComp) obj;
   if(this.name.equals(other.getName()) && this.age==other.getAge()) {
    return true;
   }else{
    return false;
   }  
 }
 @Override
 public int hashCode() {
  int result;
  result=(name==null?0:name.hashCode());
  result=result+age;
  return result;
 }
 public String toString(){
  return "name="+name+"  age="+age;
 }
 public static void main(String args[]){
  Set set=new TreeSet();
  set.add(new CustomerComp("旺财",24));
  set.add(new CustomerComp("王二",22));
  set.add(new CustomerComp("王二",22));
  set.add(new CustomerComp("李四",29));
  set.add(new CustomerComp("翠花",25));
  set.add(new CustomerComp("翠花",25));
  set.add(new CustomerComp("张三",31)); 
  Iterator it=set.iterator() ;
  while(it.hasNext()){
   CustomerComp cc=(CustomerComp) it.next();
   System.out.println(cc);
  }
 }
}

 

/********** CustomerComp .java end***********/

 

 

/********** TestHashSet .java begin***********/

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;


public class TestHashSet implements Comparable{

 private String name;
 private String password;
 
 public TestHashSet(String name, String password) {
  super();
  this.name = name;
  this.password = password;
 }

 public String getName() {
  return name;
 }

 public String getPassword() {
  return password;
 }

 public void setName(String name) {
  this.name = name;
 }

 public void setPassword(String password) {
  this.password = password;
 }

 public TestHashSet(){}
 
 public String toString(){
  return "name="+name+" password="+password;
 }
 public int compareTo(Object arg0) {
  // TODO Auto-generated method stub
  return 0;
 }
 public static void main(String[] args) {  
  Set  set =new HashSet();
//  TestHashSet th1=new TestHashSet("ambow","ambow");
//  TestHashSet th2=new TestHashSet("ambow","frfr");
//  TestHashSet th3=new TestHashSet("ambow","bgbg");
//  TestHashSet th4=new TestHashSet("ambow","bgbg");
//  set.add(th1);
//  set.add(th2);
//  set.add(th3);
//  set.add(th4);
//  Iterator it=set.iterator();
//  while(it.hasNext()){
//   System.out.println(it.next());
//  }  
  set.add(new TestHashSet("ambow","ambow"));
  set.add(new TestHashSet("vfvf","ambow"));
  set.add(new TestHashSet("ambow","juju"));
  set.add(new TestHashSet("vfvf","nhnh"));
  set.add(new TestHashSet("ambow","ambow"));
  Iterator it=set.iterator();
  while(it.hasNext()){
   System.out.println(it.next());
  }
 }
}

 

/********** TestHashSet .java end***********/

 

/********** TestTreeSet .java begin***********/

 

import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

/**
 * 自然排序(默认并且升序):当TreeSet向集合中加入一个对象时,会把它插入到有序的对象序列中。
 * @author Administrator
 *
 */

public class TestTreeSet {
 
 public static void main(String args[]){
  Set set=new TreeSet();    
  set.add(new Integer(3));
  set.add(new Integer(8));
  set.add(new Integer(2));
  set.add(new Integer(25));
  set.add(new Integer(2));
  set.add(new Integer(10));
  
  Iterator it=set.iterator();
  while(it.hasNext()){
   System.out.print(it.next()+"  ");
  }
  
 }
 
}

/********** TestTreeSet .java end***********/

 

 

/********** TestUpdateCustomer.java begin***********/

 

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class TestUpdateCustomer{
 private String name;
 
 private int age;

 public String getName() {
  return name;
 }

 public int getAge() {
  return age;
 }

 public void setName(String name) {
  this.name = name;
 }

 public void setAge(int age) {
  this.age = age;
 }

 public TestUpdateCustomer(String name, int age) {
  super();
  this.name = name;
  this.age = age;
 }
 public String toString(){
  return "name="+name+"  age="+age;
 }
 
 public TestUpdateCustomer(){}

 /*
  * 修改一个对象值
  */
    public static void main(String args[]){
     Set set=new TreeSet();
     TestUpdateCustomer cust1=new TestUpdateCustomer("mingkun",25);
     TestUpdateCustomer cust2=new TestUpdateCustomer("mingkun",25);
     set.add(cust1);
//     set.add(cust2);
     System.out.println(set.size());
     cust1.setName("ambow");
     Iterator it=set.iterator();
  while(it.hasNext()){
   TestUpdateCustomer customer=(TestUpdateCustomer) it.next();
   System.out.println(customer);
  }
    }

// public int compareTo(Object arg0) {
//  // TODO Auto-generated method stub
//  return 0;
// }
}

/********** TestUpdateCustomer.java end***********/

1. Set(集合)里面的元素是无序的,但没有重复的元素 2. 两个实现类HashSet(LinkHashSet)和TreeSet,TreeSet有排序功能(Set set=new TreeSet();set.add(new Integer(8)); set.add(new Integer(4)); set.add(new Integer(7));)输出后的结果是:4 7 8 Eg: package test; import java.util.*; public class Set{ public static void main(String[] args) { //先实例化一个set Set<String> stringSet=new HashSet<String>(); //向set里面添加元素 stringSet.add("123"); stringSet.add("wer"); stringSet.add("345"); //将set里的元素取出 Iterator<String> stringIter=stringSet.iterator(); while(stringIter.hasNext()){ String str=stringIter.next(); System.out.println(str); System.out.println("~~~~~~~~~~~"); } System.out.println("stringSet里面有"+stringSet.size()+"元素"); } } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2.List(列表<接口>)以线性方式存储,有序,允许重复主要实现类有LinkList(采用链表数据结构)和ArrayList(代表可大可小的数组) Eg: package test; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; public class Map { public static void main(String[] args) { List list=new ArrayList(); list.add(10); list.add(2); list.add(34); //对list数组进行自然排序 Collections.sort(list); //依次检索输出list的所有对象 // for(int i=0;i<list.size();i++){ // System.out.println(list.get(i)); // } Iterator Iter=list.iterator(); while(Iter.hasNext()){ System.out.println(Iter.next()); } } } 3.Map(映射<集合>)是无序的,是一种把键对象和值对象进行映射的集合,它每一个元素都包含一对键对象和值对象,给出键对象就可以得到值对象,键对象不允许重复,对值没有要求,多个任意键对象可以映射到一个值对象上;如果有相同键对象,最后一次加入的键对象和值对象将会覆盖以前的; Eg: package test; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class NewMap { public static void main(String[] args) { //向map里添加键值对 //如果要对键进行排序Map map=new TreeMap(); Map<Integer,String> map=new TreeMap<Integer,String>(); //Map map=new HashMap(); map.put(1, "yi"); map.put(23, "er"); map.put(12, "san"); map.put(3, "si"); //遍历map Set keys=map.keySet(); Iterator<Integer> stringIter=keys.iterator(); while(stringIter.hasNext()){ int key=stringIter.next(); String value=(String) map.get(key);//根据键key得到value的值 System.out.println(key+"---"+value); } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值