zoukankan      html  css  js  c++  java
  • hasSet,TreeSet,ArrayList,LinkedList,Vector,HashMap,HashTable,TreeMap利用Iterator进行输出

    基础类,没有重写hashCode()和equals()方法:

    package niukewang;
    
    import java.util.Objects;
    
    public class setClass {
    
        String a;
        String b;
        public setClass(String a, String b)
        {
            this.a=a;
            this.b=b;    
        }
        
    }

    测试类:

    package niukewang;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Hashtable;
    import java.util.Iterator;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Set;
    import java.util.TreeMap;
    import java.util.TreeSet;
    import java.util.Vector;
    
    
    public class test1 {
    
        public static void main(String args[]) 
        { 
            setClass s1=new setClass("http://www.yjbys.com/", "");
            setClass s2=new setClass("http://www.yjbys.com1/", "");
            setClass s3=new setClass("http://www.yjbys.com2/", "");
            setClass s4=new setClass("http://www.yjbys.com2/", "");
            
            //hasSet
            System.out.println("hasSet......");
            Set<setClass> set=new HashSet<setClass>();
            set.add(s1);
            set.add(s2);
            set.add(s3);
            set.add(s4);
            Iterator it= set.iterator();
            while(it.hasNext())
            {
                setClass ob=(setClass)it.next();
                System.out.println(ob.a);
            }
            
    /*        //TreeSet
            System.out.println("
    TreeSet........");
            Set<setClass> tree=new TreeSet<setClass>();
            tree.add(s1);
            tree.add(s2);
            tree.add(s3);
            tree.add(s4);
            Iterator treeit=tree.iterator();
            while(treeit.hasNext())
            {
                setClass ob=(setClass) treeit.next();
                System.out.println(ob.a);
            }
            */
            //TreeMap
    /*        System.out.println("
    TreeMap.........");
            Map<setClass,String> treemap=new TreeMap<setClass,String>();
            treemap.put(s1, "TreeMap one");
            treemap.put(s2, "TreeMap two");
            treemap.put(s3, "TreeMap three");
            treemap.put(s4, "TreeMap four");
            for(Map.Entry<setClass, String> entry: treemap.entrySet())
            {
                System.out.println("The treemap key is "+entry.getKey().a+" The value is "+ entry.getValue());
            }*/
            
            //HasMap
            System.out.println("
    HashMap......");
            Map<setClass,String> hashmap=new HashMap<setClass, String>();
            hashmap.put(s1, "HashMap one");
            hashmap.put(s2, "HashMap two");
            hashmap.put(s3, "HashMap three");
            hashmap.put(s4, "HashMap four");
            for(Map.Entry<setClass, String> entry : hashmap.entrySet())
            {
                System.out.println("The key is "+entry.getKey().a+" The value is "+entry.getValue());
            }
            
            //HasTable
            System.out.println("
    HashTable......");
            Map<setClass,String> hashtable=new Hashtable<setClass, String>();
            hashtable.put(s1, "HashTable one");
            hashtable.put(s2, "HashTable two");
            hashtable.put(s3, "HashTable three");
            hashtable.put(s4, "HashTable four");
            for(Map.Entry<setClass, String> entry: hashtable.entrySet())
            {
                System.out.println("The HashTable key is "+entry.getKey().a+" The HashTable value is "+entry.getValue());
            }
            
            //LinkedList
            System.out.println("
    LinkedList.....");
            List list=new LinkedList();
            list.add(s1);
            list.add(s2);
            list.add(s3);
            list.add(s4);
            Iterator listit=list.iterator();
            while(listit.hasNext())
            {
                setClass ob=(setClass)listit.next();
                System.out.println(ob.a);
            }
    
            //ArrayList
            System.out.println("
    ArrayList.....");
            List array=new ArrayList();
            array.add(s1);
            array.add(s2);
            array.add(s3);
            array.add(s4);
            Iterator arrayit=array.iterator();
            while(arrayit.hasNext())
            {
                setClass ob=(setClass)arrayit.next();
                System.out.println(ob.a);
            }
            
            //vector
            System.out.println("
    vector.....");
            Vector v=new Vector();
            v.add(s1);
            v.add(s2);
            v.add(s3);
            v.add(s4);
            Iterator vit=v.iterator();
            while(vit.hasNext())
            {
                setClass  ob=(setClass)vit.next();
                System.out.println(ob.a);
            }
                
        }
    }

    输出结果:
    由于没有重写hasCode和equals方法,所以s3和s4对象认为是不相同的,因此在set中被看成了不同的对象;同理,在hashMap和hashTable中,其根据hashCode的值对数据进行存储的,所以,hashcode的值不一样,因此也存储了4个数。

    hasSet......
    http://www.yjbys.com1/
    http://www.yjbys.com2/
    http://www.yjbys.com/
    http://www.yjbys.com2/
    
    HashMap......
    The key is http://www.yjbys.com1/ The value is HashMap two
    The key is http://www.yjbys.com2/ The value is HashMap four
    The key is http://www.yjbys.com/ The value is HashMap one
    The key is http://www.yjbys.com2/ The value is HashMap three
    
    HashTable......
    The HashTable key is http://www.yjbys.com2/ The HashTable value is HashTable four
    The HashTable key is http://www.yjbys.com2/ The HashTable value is HashTable three
    The HashTable key is http://www.yjbys.com1/ The HashTable value is HashTable two
    The HashTable key is http://www.yjbys.com/ The HashTable value is HashTable one
    
    LinkedList.....
    http://www.yjbys.com/
    http://www.yjbys.com1/
    http://www.yjbys.com2/
    http://www.yjbys.com2/
    
    ArrayList.....
    http://www.yjbys.com/
    http://www.yjbys.com1/
    http://www.yjbys.com2/
    http://www.yjbys.com2/
    
    vector.....
    http://www.yjbys.com/
    http://www.yjbys.com1/
    http://www.yjbys.com2/
    http://www.yjbys.com2/


    改变之后的。

    基础类:

    package niukewang;
    
    import java.util.Objects;
    
    public class setClass {
    
        String a;
        String b;
        public setClass(String a, String b)
        {
            this.a=a;
            this.b=b;    
        }
        
        public int hashCode() {
            return a.hashCode();
        }
        
        public boolean equals(Object obj)
        {
            if(obj==null) return false;
            
            if(getClass() != obj.getClass()) return false;
            
            final setClass s=(setClass)obj;
            
            return Objects.equals(this.a, s.a);
        }
    }


    测试类:

    package niukewang;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Hashtable;
    import java.util.Iterator;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Set;
    import java.util.TreeMap;
    import java.util.TreeSet;
    import java.util.Vector;
    
    
    public class test1 {
    
        public static void main(String args[]) 
        { 
            setClass s1=new setClass("http://www.yjbys.com/", "");
            setClass s2=new setClass("http://www.yjbys.com1/", "");
            setClass s3=new setClass("http://www.yjbys.com2/", "");
            setClass s4=new setClass("http://www.yjbys.com2/", "");
            
            //hasSet
            System.out.println("hasSet......");
            Set<setClass> set=new HashSet<setClass>();
            set.add(s1);
            set.add(s2);
            set.add(s3);
            set.add(s4);
            Iterator it= set.iterator();
            while(it.hasNext())
            {
                setClass ob=(setClass)it.next();
                System.out.println(ob.a);
            }
            
    /*        //TreeSet
            System.out.println("
    TreeSet........");
            Set<setClass> tree=new TreeSet<setClass>();
            tree.add(s1);
            tree.add(s2);
            tree.add(s3);
            tree.add(s4);
            Iterator treeit=tree.iterator();
            while(treeit.hasNext())
            {
                setClass ob=(setClass) treeit.next();
                System.out.println(ob.a);
            }
            */
            //TreeMap
    /*        System.out.println("
    TreeMap.........");
            Map<setClass,String> treemap=new TreeMap<setClass,String>();
            treemap.put(s1, "TreeMap one");
            treemap.put(s2, "TreeMap two");
            treemap.put(s3, "TreeMap three");
            treemap.put(s4, "TreeMap four");
            for(Map.Entry<setClass, String> entry: treemap.entrySet())
            {
                System.out.println("The treemap key is "+entry.getKey().a+" The value is "+ entry.getValue());
            }*/
            
            //HasMap
            System.out.println("
    HashMap......");
            Map<setClass,String> hashmap=new HashMap<setClass, String>();
            hashmap.put(s1, "HashMap one");
            hashmap.put(s2, "HashMap two");
            hashmap.put(s3, "HashMap three");
            hashmap.put(s4, "HashMap four");
            for(Map.Entry<setClass, String> entry : hashmap.entrySet())
            {
                System.out.println("The key is "+entry.getKey().a+" The value is "+entry.getValue());
            }
            
            //HasTable
            System.out.println("
    HashTable......");
            Map<setClass,String> hashtable=new Hashtable<setClass, String>();
            hashtable.put(s1, "HashTable one");
            hashtable.put(s2, "HashTable two");
            hashtable.put(s3, "HashTable three");
            hashtable.put(s4, "HashTable four");
            for(Map.Entry<setClass, String> entry: hashtable.entrySet())
            {
                System.out.println("The HashTable key is "+entry.getKey().a+" The HashTable value is "+entry.getValue());
            }
            
            //LinkedList
            System.out.println("
    LinkedList.....");
            List list=new LinkedList();
            list.add(s1);
            list.add(s2);
            list.add(s3);
            list.add(s4);
            Iterator listit=list.iterator();
            while(listit.hasNext())
            {
                setClass ob=(setClass)listit.next();
                System.out.println(ob.a);
            }
    
            //ArrayList
            System.out.println("
    ArrayList.....");
            List array=new ArrayList();
            array.add(s1);
            array.add(s2);
            array.add(s3);
            array.add(s4);
            Iterator arrayit=array.iterator();
            while(arrayit.hasNext())
            {
                setClass ob=(setClass)arrayit.next();
                System.out.println(ob.a);
            }
            
            //vector
            System.out.println("
    vector.....");
            Vector v=new Vector();
            v.add(s1);
            v.add(s2);
            v.add(s3);
            v.add(s4);
            Iterator vit=v.iterator();
            while(vit.hasNext())
            {
                setClass  ob=(setClass)vit.next();
                System.out.println(ob.a);
            }
                
        }
    }


    输出结果:

    由于覆盖了hashCode和equals方法,因此s3和s4被认为是相同的对象。

    hasSet......
    http://www.yjbys.com1/
    http://www.yjbys.com/
    http://www.yjbys.com2/
    
    HashMap......
    The key is http://www.yjbys.com1/ The value is HashMap two
    The key is http://www.yjbys.com/ The value is HashMap one
    The key is http://www.yjbys.com2/ The value is HashMap four
    
    HashTable......
    The HashTable key is http://www.yjbys.com1/ The HashTable value is HashTable two
    The HashTable key is http://www.yjbys.com/ The HashTable value is HashTable one
    The HashTable key is http://www.yjbys.com2/ The HashTable value is HashTable four
    
    LinkedList.....
    http://www.yjbys.com/
    http://www.yjbys.com1/
    http://www.yjbys.com2/
    http://www.yjbys.com2/
    
    ArrayList.....
    http://www.yjbys.com/
    http://www.yjbys.com1/
    http://www.yjbys.com2/
    http://www.yjbys.com2/
    
    vector.....
    http://www.yjbys.com/
    http://www.yjbys.com1/
    http://www.yjbys.com2/
    http://www.yjbys.com2/


    但是TreeSet和TreeMap还是不能这么输出,因为要实现Comparable接口。因为TreesSet和TreeMap是一个有序的集合,必须知道你想怎么排列。你可以换成LinkedList或ArrayList就不用了。

    下一篇文章是对TreeSet和TreeMap的输出。

  • 相关阅读:
    2020软件工程作业04
    2020软件工程作业02
    第一周作业
    2019春总结作业
    12周作业
    第十一周作业
    第十周阅读
    第9周编程总结
    编程总结模版
    第8周编程总结
  • 原文地址:https://www.cnblogs.com/Berryxiong/p/6138314.html
Copyright © 2011-2022 走看看