java集合类案例综述(五)
ator
iterator = set3.iterator(); while(iterator.hasNext()){ Object p = iterator.next(); System.out.println("p ---->"+p+",hasCode is:"+p.hashCode()); } System.out.println("*********************************************"); //------------------------------------------- /** * LinkedHashSet 根据哈希码进行存放,同时用链表记录元素的加入顺序。 * 通过链表存储对象,一般插入和删除效率较高,检索效率较低。 */ LinkedHashSet linkedSet = new LinkedHashSet(); /** * LinkedHashSet记录元素加入顺序 * */ Persion1 pd1 = new Persion1(55); Persion1 pd2 = new Persion1(66); Persion1 pd3 = new Persion1(77); Persion1 pd4 = new Persion1(88); linkedSet.add(pd1); linkedSet.add(pd2); linkedSet.add(pd3); linkedSet.add(pd4); linkedSet.add("aaaa"); linkedSet.add("bbbb"); linkedSet.add("cccc"); for(Object p:linkedSet){ System.out.println("p ***> is:"+p+",hasCode is:"+p.hashCode()); } System.out.println("---------------------------------------"); //------------------------------------------- /** * 有多个不同类型的对象加入TreeSet,就会报异常。 * 对于自定义的类,它的对象只能存放一个,而且实现类不需要实现【Comparable接口】。 * 但是,如果 想要存放多个自定义的类的对象, * 不实现Comparable接口就会发生java.lang.ClassCastException异常 。 */ Set treeSet = new TreeSet(); Persion1 pe1 = new Persion1(12); treeSet.add(pe1); /*treeSet.add(new String("hello"));*/ Iterator itor = treeSet.iterator(); while(itor.hasNext()){ System.out.println("TreeSet p is:"+itor.next()); } System.out.println("---------------------------------------"); //------------------------------------------- /** * Set排序 * Persion3实现了排序的接口Comparable */ Set
sortSet = new TreeSet
(); Persion3 pf1 = new Persion3(1); Persion3 pf2 = new Persion3(8); Persion3 pf3 = new Persion3(2); Persion3 pf4 = new Persion3(5); Persion3 pf5 = new Persion3(9); Persion3 pf6 = new Persion3(4); Persion3 pf7 = new Persion3(0); sortSet.add(pf1); sortSet.add(pf2); sortSet.add(pf3); sortSet.add(pf4); sortSet.add(pf5); sortSet.add(pf6); sortSet.add(pf7); for(Persion3 p:sortSet){ System.out.println("p ***>
is:"+p+",hasCode is:"+p.hashCode()); } System.out.println("---------------------------------------"); /** * Set排序,按照【排序器】进行排序Comparetor */ TreeSet
sortSetByComparator = new TreeSet
(new ComparetorByIndex()); sortSetByComparator.add(pf1); sortSetByComparator.add(pf2); sortSetByComparator.add(pf3); sortSetByComparator.add(pf4); sortSetByComparator.add(pf5); sortSetByComparator.add(pf6); sortSetByComparator.add(pf7); for(Persion3 p:sortSetByComparator){ System.out.println("p ***> is:"+p+",hasCode is:"+p.hashCode()); } System.out.println("---------------------------------------"); } } class Persion1{ public int mAge; private static AtomicInteger atIndex = new AtomicInteger();//原子类型 public int index; public Persion1(int age){ mAge = age; index = atIndex.addAndGet(1); } @Override public int hashCode() { return 0; } @Override public String toString() { return mAge+""+super.toString()+index; } @Override public boolean equals(Object arg0) { if(arg0 instanceof Persion1){ Persion1 p = (Persion1)arg0; return mAge == p.mAge; } return super.equals(arg0); } } class Persion2{ public int mAge; private static AtomicInteger atIndex = new AtomicInteger();//原子类型 public int index; public Persion2(int age){ mAge = age; index = atIndex.addAndGet(1); } @Override public int hashCode() { return 0; } @Override public String toString() { return mAge+""+super.toString()+index; } @Override public boolean equals(Object