Set
HashSet是Set接口的典型实现,大多数时候使用Set集合时就是使用这个实现类。
- HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。
- HashSet 允许有 null 值。
- HashSet是无序的,即不会记录插入的顺序。
- HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。必须在多线程访问时显式同步对 HashSet 的并发访问。
代码
package com.zhl;
import java.util.*;
/**
* @author zhl
* @date 2020/8/25
*/
public class Test3 {
public static void main(String[] args) {
Test3 test3 =new Test3();
test3.test1();
System.out.println("-------------------");
test3.test2();
System.out.println("-------------------");
test3.test3();
}
public void test1(){
Set<String> names = new TreeSet<>();
names.add("大黄");
names.add("小花");
names.add("二狗子");
for (String name : names) {
System.out.println(name);
}
}
//排序,去重
public void test2(){
Set<Integer> nums = new TreeSet<>();
nums.add(1);
nums.add(8);
nums.add(10);
nums.add(8);
nums.add(2);
nums.add(8);
nums.add(7);
for (Integer num : nums) {
System.out.println(num);
}
}
//利用set去重
public void test3(){
List<String> nameList = new ArrayList<>();
nameList.add("大黄");
nameList.add("大黄");
nameList.add("小花");
nameList.add("二狗子");
nameList.add("大黄");
System.out.println("去重前list:");
for (String name : nameList) {
System.out.print(name + " ");
}
//利用set不能放重复对象的特性,达到去重目的
Set<String> names = new HashSet<>(nameList);
nameList = new ArrayList<>(names);
System.out.println("\n去重后list:");
for (String s : nameList) {
System.out.print(s+ " ");
}
}
}
##结果图