Set使用基础以及该在什么地方使用?

帅比萌擦擦* 提交于 2019-12-03 02:21:09

 这次我主要说的是关于Set[集合]、Map[键值对]。

1、Set【集合】

      Java中的Set正好和数学上直观得集合[Set]的概念是相同。Set最大的特性就是不允许在其中存放的元素是重复的。根据这个特点,我们就可以使用Set这个接口来实现像商品种类的存储需求。Set可以被用来过滤在其他容器中存放的元素,从而得到一个没有包含重复新的集合。

      在这里主要说的是HashSet与TreeHash的基础使用。

 

      1)、HashSet:无序且是不重复的

import java.util.HashSet;
import java.util.Iterator;
public class HashSetText {
	public static void main(String[] args) {
		//创建集合,泛型可以是一个自定义对象,也可以是Java内置对象
		HashSet<String> ha = new HashSet<String>();
		//添加数据
		ha.add("BBB");
		ha.add("DDD");
		ha.add("AAA");
		ha.add("CCC");
		//添加与之前的重复,则不添加进去
		ha.add("AAA");
		
		//取出方式一:迭代器
		//将集合中的数据放入迭代器中遍历
		Iterator<String> iter=ha.iterator();
		//如果迭代器iter中没有元素就会返回false,就会跳出循环
		while(iter.hasNext()){
			//利用next方法逐个取得数据,并输出
			System.out.println(iter.next());
		}
		System.out.println("-----------------");
		//取出方式二:增强for
		//定义一个与集合中的数据类型相同的变量,用于临时存储数据,
		//该循环的实质:会跳到方式一,用方式一的方法输出
		for(String s:ha){
			//直接输出
			System.out.println(s);
		}
	}
}

     以下是HashSet的方法摘要:



 

       2)、TreeSet:有序且不重复

                            顺序可以是系统默认的自然顺序,也可以在泛型为自定义的对象是重写

     自定义的一个person类

public class person implements Comparable<person> {
	private String name;
	private int age;
	/**
	 * 构造方法
	 * @param name 姓名
	 * @param age 年龄
	 */
	public person(String name,int age){
		this.name=name;
		this.age=age;
	}
	/**
	 * 重写了输出方法
	 */
	@Override
	public String toString() {
		return name + ":" + age ;
	}
	/**
	 * 重写了比较器
	 */
	@Override
	public int compareTo(person p) {
		//根据姓名排序
		return this.age-p.age;
		//根据姓名排序
		//return this.name.compareTo(p.name);
	}
}

    主函数:

import java.util.Iterator;
import java.util.TreeSet;

public class TreeSetText {
	public static void main(String[] args) {
		//创建集合,泛型可以是一个自定义对象,也可以是Java内置对象
		//这里是自定义对象,鉴于TreeSet的特性,可以重写比较器或者采用默认自然顺序排序
		TreeSet<person> ha = new TreeSet<person>();
		//添加数据
		ha.add(new person("BBB",22));
		ha.add(new person("DDD",30));
		ha.add(new person("AAA",20));
		ha.add(new person("CCC",21));
		//由于与之前的对象不是完全相同,故可以添加
		ha.add(new person("AAA",19));
		//由于与之前的对象是完全相同的,故不能添加
		ha.add(new person("AAA",20));

		//取出方式一:迭代器
		//将集合中的数据放入迭代器中遍历
		Iterator<person> iter=ha.iterator();
		//如果迭代器iter中没有元素就会返回false,就会跳出循环
		while(iter.hasNext()){
			//利用next方法逐个取得数据,并输出
			System.out.println(iter.next());
		}
		System.out.println("-----------------");
		//取出方式二:增强for
		//定义一个与集合中的数据类型相同的变量,用于临时存储数据,
		//该循环的实质:会跳到方式一,用方式一的方法输出
		for(person s:ha){
			//直接输出
			System.out.println(s);
		}
	}
}

     以下是TreeSet的方法摘要:



 



 

      以上需要注意的是HashSet适合不重复且没有顺序的数据。

                               TreeSet适合不重复且有顺序的数据

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!