58 java集合和泛型_8 _Collection父接口的另一个子接口Set接口
Set集合–Set子接口
-
特点:无序、无下标、元素不可重复。
-
方法:(全部继承自Collection中的方法,并没有提供其他的方法)…(可查看api学习)
-
jdk的介绍:
- 一个不包含重复元素的 collection。更确切地讲,set 不包含满足
e1.equals(e2)
的元素对e1
和e2
,并且最多包含一个 null 元素
- 一个不包含重复元素的 collection。更确切地讲,set 不包含满足
Set接口的使用
package com.wlw.collection.set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
/**
* Set接口的使用
* 特点:无序 无下标 元素不可重复
*/
public class Set_Demo {
public static void main(String[] args) {
Set<String> set = new HashSet<String>();
//1.添加
set.add("华为");
set.add("苹果");
set.add("小米");
System.out.println("元素个数:"+set.size());
System.out.println(set.toString());
//2.删除
/*
set.remove("小米");
System.out.println("删除之后,元素个数:"+set.size());
System.out.println("删除之后:"+set.toString());
*/
//3.遍历
//两种方式(增强for 和迭代器,因为无下标,所以不能使用普通for)
//3.1增强for
System.out.println("---------------3.1增强for-------------------");
for (String s : set) {
System.out.println(s);
}
//3.2迭代器
System.out.println("---------------3.2迭代器-------------------");
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()){
String s = iterator.next();
System.out.println(s);
}
//4。判断
System.out.println(set.contains("苹果"));//true
System.out.println(set.isEmpty());;//false
}
}
/*
元素个数:3
[苹果, 华为, 小米]
---------------3.1增强for-------------------
苹果
华为
小米
---------------3.2迭代器-------------------
苹果
华为
小米
true
false
*/
Set实现类
-
HashSet 【重点】 :
- 基于HashCode实现元素不重复。(里面是一个哈希表)
- 当存入元素的哈希码相同时,会调用equals进行确认, 如结果为true, 则拒绝后者存入。
-
TreeSet:
- 基于排列顺序实现元素不重复。
- 实现了SortedSet接口,对集合元素自动排序。
- 元素对象的类型必须实现Comparable接口,指定排序规则。
- 通过CompareTo方法确定是否为重复元素。