迭代器:又称遍历器,用于遍历集合中的所有元素
实例及说明
/**
* while语句是判断是否有下一个元素,有就进入到处理元素模块打印输出
* for语句是利用循环来进行判断是否有下一个元素
* it.next调用该方法,获取到下一个元素,同时将指针往后移一位
* */
Iterator it.iterator();
while(it.hasNext()){
//处理元素
}
for(Iterator it=arr.getIterator;it.hasNext()){
//处理元素
}
代码实例
public class hashSet {
public static void main(String[] args) {
// TODO Auto-generated method stub
HashSet<String> hs=new HashSet<String>();
hs.add("冰岛");
hs.add("阿拉斯加");
hs.add("纽约");
/**
* HashSet是无序的;Iterator迭代器进行集合元素的遍历
* */
Iterator<String> iterator=hs.iterator();
for(Iterator<String> it=hs.iterator();it.hasNext();){
System.out.println(it.next());
}
}
}
TreeSet代码示例(Person类与Main类)
Person.class
public class Person implements Comparable<Person>{
private String name;
private int age;
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
void print(){
/**
* 利用String.format方法输出信息
* */
System.out.println(String.format("姓名=%s,年龄=%d", name,age));
}
@Override
public int compareTo(Person o) {
/**
* 1表示正数
* -1表示负数
* */
if(this.age>o.age)
return 1;
else if(this.age<o.age)
return -1;
else
return 0;
}
}
Main.class
public class Main {
/**
* 在TreeSet中添加自定义对象
* */
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeSet<Person> ts=new TreeSet<Person>();
ts.add(new Person("jack",20));
ts.add(new Person("jay",30));
ts.add(new Person("may",25));
/**
* 利用迭代器进行遍历
* */
Iterator<Person> it=ts.iterator();
while(it.hasNext()){
Person p=it.next();
p.print();
}
}
}
运行结果
上述代码解析:TreeSet是有序的,在上述代码中Person类中有两个属性name与age,在没有写入Comparable这个方法时,代码运行是会报错,因为有两个属性存在的会,系统不知道用哪一个属性进行排序输出;Comparable方法的使用是,让属性类实现Comparable,会自动生成compareTo方法,重写该方法写出有序输出的依据--------总结:List的共性是,元素都是有索引的,元素是可以重复的;Set中元素是无索引的,不可重复的;Set的两个实现类HashSet是无序的,基于哈希表,TreeSet是有序的,基于二叉树