Set的实现类HashSet与TressSet代码实现

迭代器:又称遍历器,用于遍历集合中的所有元素

实例及说明

/**
 * 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是有序的,基于二叉树

原文地址:https://www.cnblogs.com/sinon/p/5945165.html