您的位置:首页 > 其它

Set集合之HashSet和TreeSet的使用方式

2017-12-29 22:41 531 查看
作者:叁念

【Set集合】

特点:

不重复:内部通过equals方法来判断元素是否相等

无序性:指的是元素的添加顺序和迭代出来的顺序不一定相等

1.HashSet:

完全继承了Set或者Collection里的方法实现

add、addAll、clear、isEmpty、size、contains、iteretor、remove等(简单方法不做解释)

import java.util.HashSet;
import java.util.Iterator;

public class SN3_HashSet {
public static void main(String[] args) {
HashSet<Integer> hashSet = new HashSet<>();
for (int i = 0; i < 10; i++) {
hashSet.add((int)(Math.random()*100));
}
//获取大小
System.out.println(hashSet.size());
//打印
Iterator<Integer> it = hashSet.iterator();
while(it.hasNext()) {
System.out.print(it.next()+" ");
}
//判斷是否包含元素
System.out.println(hashSet.contains(8));

}
}


2.TreeSet:

(简单方法不做解释)

import java.util.TreeSet;

/**
* 【TreeSet】:对Set接口功能做了极大扩展,并且具有排序功能
新增了很多方法:
first(取第一个元素)、last(取最后一个元素)、
pollFirst(获取并移除第一个元素)、pollLast(获取并移除最后一个元素)、
ceiling(获取该Set中大于等于指定值的最小元素)、floor(获取该Set中小于等于指定值的最大元素)、
higher(获取该Set中严格大于指定值的最小元素)、lower(获取该Set中严格小于指定值的最大元素)、
headSet(开头一段子集)、tailSet(结尾一段子集)、subSet(中间一段子集)
* @author yujie
*
*/
public class SN4_TreeSet {
public static void main(String[] args) {
TreeSet<Integer> treeSet = new TreeSet<>();
for (int i = 0; i < 10; i++) {
treeSet.add((int) (Math.random() * 100));
}
// 打印
for (Integer i : treeSet) {
System.out.print(i + " ");
}

System.out.println("\n/*********************************************/");
/**
*      【TreeSet自定义排序的方式:】
1).元素本身实现排序算法,做法元素类。比如Person自身实现Comparable接口,实现抽象方法compareTo(Object o)
这种方式实现类Person本身也要参与比较
2).由TreeSet的对象来实现比较功能,做法,通过Comprator接口的实现类对象来构造TreeSet对象,
实现compare(Object o1,Object o2)
这种方式比较算法的实现类本身不参与比较
*/
TreeSet<Dog> treeSet2 = new TreeSet<>();
for (int i = 0; i < 10; i++) {
treeSet2.add(new Dog("小狗"+i+"号", (int) (Math.random() * 100)));
}
// 打印
for (Dog d : treeSet2) {
System.out.print(d + "\n");
}
}
}

class Dog implements Comparable<Dog>{
String name;
int age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public Dog(String name, int age) {
super();
this.name = name;
this.age = age;
}

@Override
public String toString() {
return "Dog [name=" + name + ", age=" + age + "]";
}

@Override
public int compareTo(Dog o) {
return this.getAge()-o.getAge();
}

}


+
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐