这次我主要说的是关于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适合不重复且有顺序的数据
来源:CSDN
作者:iteye_8950
链接:https://blog.csdn.net/iteye_8950/article/details/82677455