说到LinkedHashSet不得不说功能非常强大,下面我们一起了解一下LinkedHashSet的功能。
首先我们区分一下HashSet和LinkedHashSet的区别:
相同点:HashSet和LinkedHashSet都是接口Set的实现,两者都不能保存重复的数据。
不同点:主要区别是HashSet不保证集合中元素的顺序,即不能保证迭代的顺序与插入的顺序一致。而LinkedHashSet按照元素插入的顺序进行迭代,即迭代输出的顺序与插入的顺序保持一致。
其次我们上代码:
class类:
public class Hero1 {
private String name;
private String nation;
private int grade;
public Hero1(String name, String nation, int grade) {
this.name=name;
this.nation=nation;;
this.grade=grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNation() {
return nation;
}
public void setNation(String nation) {
this.nation = nation;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public String toString(){
String st="姓名:"+name+"nation:"+nation+"grade:"+grade;
return st;
}
}
注意:这里要重写toString,为什么如果不重新写,系统会默认输出hashcode编码
import java.util.LinkedHashSet;
import java.util.LinkedList;
public class SetTest {
public static void main(String[] args) {
LinkedList list1=new LinkedList();
Hero1 he1=new Hero1("刘备","蜀国",98);
Hero1 he2=new Hero1("张飞","蜀国",97);
Hero1 he3=new Hero1("关羽","蜀国",98);
Hero1 he4=new Hero1("曹操","魏国",98);
Hero1 he5=new Hero1("张辽","魏国",96);
Hero1 he6=new Hero1("周瑜","东吴",98);
Hero1 he7=new Hero1("关羽","蜀国",98);
Hero1[] h={he1,he2,he3,he4,he5,he6};
for(int i=0;i<h.length;i++)
list1.add(h[i]);
System.out.println(list1);
LinkedHashSet<Hero1> heset=new LinkedHashSet<Hero1>(list1);
for(Hero1 hhh:heset)
System.out.println(hhh);
}
}
未完待续…