Eclipse提供了快捷重写equals与hashCode的方法:在Source工具栏中提供了快捷方法:
package com.test.array;
import java.util.HashSet;
public class HashTest {
public static void main(String[] args) {
HashSet set = new HashSet();
set.add(new Person("lisi"));
set.add(new Person("lisi"));
System.out.println(set);
}
}
class Person{
String name;
public Person(String name){
this.name = name;
}
public int hashCode() {
return this.name.hashCode();
}
public boolean equals(Object obj) {
if(this == obj){
return true;
}
if(obj != null && obj instanceof Person){
Person p = (Person)obj;
if(name.equals(p.name)){
return true;
}
}
return false;
}
}
结果只打印出了一个对象
package com.test.array;
import java.util.HashSet;
import java.util.Iterator;
public class IteratorTest {
public static void main(String[] args) {
HashSet set = new HashSet();
set.add("a");
set.add("b");
set.add("c");
set.add("d");
set.add("e");
Iterator iter = set.iterator();
while(iter.hasNext()){
String value = (String)iter.next();
System.out.println(value);
}
}
}
也可使用for循环迭代
for(Iterator iter = set.iterator();iter.hasNext();){
String value = (String)iter.next();
System.out.println(value);
}
下例中的TreeSet必须要有一个comparator类,才能往里添加Student对象,否则会抛出ClassCastException
package com.test.array;
import java.util.Comparator;
import java.util.TreeSet;
public class TreeSetTest {
public static void main(String[] args) {
TreeSet set = new TreeSet(new StudentComparator());
set.add(new Student(80));
set.add(new Student(90));
set.add(new Student(60));
set.add(new Student(70));
System.out.println(set);
}
}
class Student{
int score;
public Student(int score) {
this.score = score;
}
public String toString() {
return String.valueOf(score);
}
}
class StudentComparator implements Comparator{
//按学生成绩升序
public int compare(Object o1, Object o2) {
Student s1 =(Student)o1;
Student s2 =(Student)o2;
return s1.score - s2.score;
}
}
分享到:
相关推荐
set list ArrayList等java集合类详述
java集合类list-set-map.doc
Java 集合排序及java 集合类详解 Java 集合排序及java 集合类详解,Java里面最重要、最常用也就是集合那部分了,能够用好集合和理解好集合对于做Java程序的开发拥有无比的好处。本教程详细解释了关于Java中的集合是...
Java集合排序及java集合类详解,对list,set,map等java集合进行详细讲解
Java集合类List-Set-Map的区别和联系.doc
集合类的框架为集合的实现者提供了大量的接口和抽象类,并对其中的某些机制给予了描述,例如,Iterator(迭代协议)。实现Comparable接口或Comparator接口,用户可以根据需要对集合中的元素进行排序。为了方便用户...
Java集合排序及java集合类详解(Collection、List、Map、Set).doc
该文档主要详细总结了Java集合的相关知识,包括Collection和Map接口、Collection接口的子接口List和Set接口以及具体的实现类、存储原理等;Map接口的子接口HashMap、LinkedHashMap、TreeMap、Properties等
Java集合类性能分析 Collection List Map Set
例子2-3: package test; import java.util.HashSet; import java.util.Iterator; //package cn.itcast.p.bean; class Person /*extends Object*/// implements Comparable { private String name; private ...
Java集合排序及java集合类详解(Collection、List、Map、Set)
java集合类源码分析之Set详解.docx
Java集合排序及java集合类详解(Collection、List、Map、Set
java 基础中的集合分类 list 、set、map, 及其各自所有的特点, 使用xmind 列举出来。
可扩展为自定义集合类。 实现类:8个实现类(实线表示),对接口的具体实现。 在很大程度上,一旦您理解了接口,您就理解了框架。虽然您总要创建接口特定的实现,但访问实际集合的方法应该限制在接口方法的使用上...
集合类Collection:集合层次中的根接口,JDK没有提供这个接口直接的实现类。 Set:不能包含重复的元素。SortedSet是一个按照升序排列元素的Set。 List:是一个有序的集合,可以包含重复的元素。提供了按索引访问的...
NULL 博文链接:https://vbo-zhang.iteye.com/blog/695498
关于java集合资料的整理 集合接口:6个接口,表示不同集合类型,是集合框架的基础。 抽象类:5个抽象类,对集合接口的部分实现。可扩展为自定义集合类。 实现类:8个实现类,对接口的具体实现。 在很大程度上,...
我写的关于set集合和list集合相关性能测试,linkedList ArrayList HashSet 等类的增删改查性能测试