基础类,没有重写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("\nTreeSet........");
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("\nTreeMap.........");
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("\nHashMap......");
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("\nHashTable......");
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("\nLinkedList.....");
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("\nArrayList.....");
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("\nvector.....");
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("\nTreeSet........");
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("\nTreeMap.........");
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("\nHashMap......");
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("\nHashTable......");
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("\nLinkedList.....");
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("\nArrayList.....");
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("\nvector.....");
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的输出。

hasSet,TreeSet,ArrayList,LinkedList,Vector,HashMap,HashTable,TreeMap利用Iterator进行输出的更多相关文章

  1. Set ,List,ArrayList,LinkedList,Vectory,HashMap,Hashtable,HashSet,TreeSet,TreeSet

    Set与List区别: 两者都是接口,并继承Collection接口:List有序,允许重复:Set无序,不能重复: ArrayList与LinkList区别: ArrayList是动态数组,查询效率 ...

  2. 杨晓峰-Java核心技术-9 HashMap Hashtable TreeMap MD

    目录 第9讲 | 对比Hashtable.HashMap.TreeMap有什么不同? 典型回答 考点分析 知识扩展 Map 整体结构 有序 Map HashMap 源码分析 容量.负载因子和树化 精选 ...

  3. ArrayList LinkedList Vector

    ArrayList是基于数组实现的,没有容量的限制. 在删除元素的时候,并不会减少数组的容量大小,可以调用ArrayList的trimeToSize()来缩小数组的容量. ArrayList, Lin ...

  4. Collections+Iterator 接口 | Map+HashMap+HashTable+TreeMap |

    Collections+Iterator 接口 1. Collections 是一个操作 Set.List 和 Map 等集合的工具类 Collections 中提供了大量方法对集合元素进行排序.查询 ...

  5. Java 集合系列14之 Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)

    概要 学完了Map的全部内容,我们再回头开开Map的框架图. 本章内容包括:第1部分 Map概括第2部分 HashMap和Hashtable异同第3部分 HashMap和WeakHashMap异同 转 ...

  6. ArrayList, LinkedList, Vector - dudu:史上最详解

    ArrayList, LinkedList, Vector - dudu:史上最详解 我们来比较一下ArrayList, LinkedLIst和Vector它们之间的区别.BZ的JDK版本是1.7.0 ...

  7. Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)

    概要 学完了Map的全部内容,我们再回头开开Map的框架图. 本章内容包括:第1部分 Map概括第2部分 HashMap和Hashtable异同第3部分 HashMap和WeakHashMap异同 转 ...

  8. Map总结--HashMap/HashTable/TreeMap/WeakHashMap使用场景分析(转)

    首先看下Map的框架图 1.Map概述 1.Map是键值对映射的抽象接口 2.AbstractMap实现了Map中绝大部分的函数接口,它减少了“Map实现类”的重复编码 3.SortedMap有序的“ ...

  9. OAF_开发系列17_实现OAF数组应用Vector / Hashmap / Hashtable / Arraylist(案例)

    20150506 Created By BaoXinjian

随机推荐

  1. [cocos2dx]让CCScrollView支持分页

    [cocos2dx]让CCScrollView支持分页 做过IOS开发的朋友, 肯定知道UIScrollView有一个isPaged属性. 当设置其为true的时候, 滑动会自动分页. 即, 每次滑动 ...

  2. SharePoint Error:a system restart from a previous installation or update is pending

    run:regedit 打开注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 删除PendingFileR ...

  3. T-SQL 语句创建Database的SQL mirroring关系

    1 证书部分:principle 和 secondary 端执行同样操作,更改相应name即可 USE master; --1.1 Create the database Master Key, if ...

  4. linux -- read(), write()

    read()函数 2011-03-23 16:28:37|  分类: linux |  标签: |字号大中小 订阅     read函数从打开的设备或文件中读取数据. #include <uni ...

  5. PHP基本知识

    PHP是以一种嵌入在HTML代码中的脚本语言,它由服务器负责解释,可以用于管理动态内容.支持数据库.处理会话跟踪.甚至构建整个电子商务站点. PHP支持许多流行.非流行的数据库,包括MySQL.Pos ...

  6. vue中如何不通过路由直接获取url中的参数

    前言:为什么要不通过路由直接获取url中的参数? vue中使用路由的方式设置url参数,但是这种方式必须要在路径中附带参数,而且这个参数是需要在vue的路由中提前设置好的. 相对来说,在某些情况下直接 ...

  7. mysqli_stmt预处理类

    <?php  $mysqli=new mysqli("localhost", "root", "123456", "xsph ...

  8. center

    center标签对其包围的文本进行水平居中处理

  9. Linux 信号概念

    程序在执行的时候,几乎任何时刻都会反生事件. 信号通常用来向一个进程通知事件. 信号是不可提前预知的,所以信号是异步的. 信号随时都可能发生,接收信号的进程也可以没有控制权. 每个信号名都以SIG开头 ...

  10. C语言 break跳出循环

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...