/*Collection--HashSet,TreeSet*/
import java.util.*;
class Animal
{
String name;
int age;
Animal(String name,int age)
{
this.name = name;
this.age = age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
class Cat extends Animal implements Comparable<Cat>//实现Comparable让元素具有比较性
{
Cat(String name,int age)
{
super(name,age);
}
public int hashCode()
{
return name.hashCode()+age*6;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Cat))
throw new RuntimeException("不是Cat对象");
Cat cat = (Cat) obj;
return this.name.equals(cat.name) && this.age == cat.age;
}
public int compareTo(Cat c)
{
int num = this.name.compareTo(c.name);
if(num ==0)
return new Integer(age).compareTo(c.age);
return num;
}
}
class Dog extends Animal
{
Dog(String name,int age)
{
super(name,age);
}
public int hashCode()
{
return name.hashCode()+age*6;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Dog))
throw new RuntimeException("不是dog对象");
Dog dog = (Dog) obj;
return this.name.equals(dog.name) && this.age == dog.age;
}
}
class Comp implements Comparator<Animal>//TreeSet集合比较器
{
public int compare(Animal a,Animal a2)
{
int num = new Integer(a.getAge()).compareTo(new Integer(a2.getAge()));
if(num ==0)
return a.getName().compareTo(a2.getName());
return num;
}
}
class AnimalSetTest
{
public static void main(String[] args)
{
HashSet<Cat> hs = new HashSet<Cat>();//HashSet集合元素无序,元素不可以重复,根据hashCode排序
hs.add(new Cat("小白猫",2));
hs.add(new Cat("小黑猫",3));
hs.add(new Cat("小灰猫",1));
hs.add(new Cat("大黑猫",4));
printHashSet(hs);
sop("---------------------------------");
TreeSet<Cat> ts = new TreeSet<Cat>();//TreeSet集合根据compareTo的返回值进行排序
ts.add(new Cat("小灰猫",1));//元素自身具备比较性,按照姓名排序
ts.add(new Cat("小黑猫",3));
ts.add(new Cat("小白猫",2));
ts.add(new Cat("大黑猫",4));
printTreeSet(ts);
sop("---------------------------------");
TreeSet<Dog> ds = new TreeSet<Dog>(new Comp());//第二种方法,使用比较器,按照年龄排序
ds.add(new Dog("大黄狗",4));
ds.add(new Dog("大灰狗",2));
ds.add(new Dog("大黑狗",3));
ds.add(new Dog("大白狗",1));
printTreeSet(ds);
}
public static void printHashSet(HashSet<? extends Animal> c)//HashSet集合迭代器
{
Iterator<? extends Animal> lt = c.iterator();
while(lt.hasNext())
{
Animal a = lt.next();
sop("AnimalName = "+a.getName()+" Age = "+a.getAge());
}
}
public static void printTreeSet(TreeSet<? extends Animal> c)//TreeSet集合迭代器
详细解决方案
如何让Iterator实现多个集合
热度:2587 发布时间:2013-02-25 21:54:41.0
相关解决方案
- jsp iterator 标签判断里边的重复值
- struts2 的<s:iterator>标签展示未完全初始化的数组出现奇怪的有关问题
- 在action中怎么在<s:iterator>获取radio 对应值
- 怎么实现<s:iterator>取值一次,根据取得题型加入不同的input
- 关于<s:iterator>遍历数据。解决办法
- 在线考试中用struts2的<s:iterator >遍历从数据库中查询到的试题和选项解决方案
- 学习struts2 <s:iterator/>使用解决思路
- s:iterator 迭代 按动态名取List<Map<String,object>>解决方案
- s:iterator 迭代不出数据解决思路
- 关于<s:iterator>取值的有关问题!跪求解答~
- s:iterator 选中一行,跳转到edit页面,该怎么处理
- java Iterator<E>的有关问题
- 黑马软件工程师 java Iterator foreach
- <s:iterator value 有值但<s:property 取不到值
- Struts2 <s:iterator> 遍历 List<Map<String, String>>
- 关于<s:iterator>取值的有关问题!跪求解答~
- <ww:iterator> 迭代 Map<String,List<AspectVo>>
- 使用了<s:iterator>标签循环生成的input块,如何取到某一个特定块的值呢
- s:iterator 怎么将集合迭代一行两列
- iterator 迭代标签 在迭代地图的时候的巧妙使用
- iterator 以及rs中涉及到游标的移动有关问题
- Struts2 <s:iterator ><s:if> <s:esle>标签施用和jstl标签循环
- Struts2 <s:iterator ><s:if> <s:esle>标签应用和jstl标签循环
- 如何在页面的<s:iterator>标签从javascript中获取value值
- Struts2标签运用之s:iterator
- struts2 jsp页面访问List, set 跟<s:iterator>的使用
- struts2 标签的应用之二 s:iterator
- struts2中<s:iterator><s:select>标签的运用_实例
- Map的施用方式-iterator collections的使用
- s:iterator 在遍历中批改数据