java中set接口的用法
java中的set接口有如下的特点:
- 不允许出现重复元素;
- 集合中的元素位置无顺序;
- 有且只有一个值为null的元素。
因为java中的set接口模仿了数学上的set抽象,所以,对应的数学上set的特性为:
- 互异性:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次。
- 无序性:一个集合中,每个元素的地位都是相同的,元素之间是无序的。集合上可以定义序关系,定义了序关系后,元素之间就可以按照序关系排序。但就集合本身的特性而言,元素之间没有必然的序。
- 空集的性质:空集是一切集合的子集
1 package test_set; 2 3 import java.util.ArrayList; 4 import java.util.HashSet; 5 import java.util.Iterator; 6 import java.util.List; 7 import java.util.Set; 8 9 /** 10 * @author zaofengchen 11 * @time 2014年7月21日 12 */ 13 public class Test_set { 14 15 private static Set<String> sets1 = new HashSet<>(); 16 public static void main(String[] args) { 17 18 save_to_set(); 19 // save_to_set_from_list(); 20 bianli(); 21 // binali_sets1_iterator(); 22 // System.out.print(remove_a_element()); 23 } 24 25 /** 26 * 往set里面存值 27 * 方法save_to_set往set里面存进去了两个1,两个3,一个2,一个null, 28 * 但是遍历的结果为null,1,2,3;且显示顺序与存储顺序无关, 29 * 体现了集合的互异性、无序性的特性。 30 * 有因为set里面可以存储空值,且因为set有互异性,所以只能存储一个空值。 31 */ 32 public static void save_to_set(){ 33 sets1.add("1"); 34 sets1.add(""); 35 sets1.add("3"); 36 sets1.add("1"); 37 sets1.add("3"); 38 sets1.add("2"); 39 } 40 /** 41 * 遍历一个set 42 */ 43 public static void bianli(){ 44 for(String s1 : sets1){ 45 System.out.print(s1+"\t"); 46 } 47 } 48 49 /** 50 * 把一个list存到一个set中 51 */ 52 public static void save_to_set_from_list(){ 53 List<String> lists = new ArrayList<>(); 54 lists.add("1"); 55 lists.add("2"); 56 lists.add("3"); 57 lists.add("4"); 58 lists.add("5"); 59 lists.add("3"); 60 61 sets1.addAll(lists); 62 } 63 64 /** 65 * 从set中删除一个元素 66 */ 67 public static boolean remove_a_element(){ 68 return sets1.remove("1"); 69 } 70 /** 71 * 使用Iterator遍历set 72 */ 73 public static void binali_sets1_iterator(){ 74 Iterator<String> ite = sets1.iterator(); 75 while(ite.hasNext()){ 76 System.out.print(ite.next()+"\t"); 77 } 78 } 79
1 package test_set; 2 3 import java.util.ArrayList; 4 import java.util.HashSet; 5 import java.util.Iterator; 6 import java.util.List; 7 import java.util.Set; 8 9 /** 10 * @author Qiaofengbo 11 * @time 2014年7月21日 12 */ 13 public class Test_set { 14 15 private static Set<String> sets1 = new HashSet<>(); 16 public static void main(String[] args) { 17 18 save_to_set(); 19 // save_to_set_from_list(); 20 bianli(); 21 // binali_sets1_iterator(); 22 } 23 24 /** 25 * 往set里面存值 26 */ 27 public static void save_to_set(){ 28 sets1.add("1"); 29 sets1.add(""); 30 sets1.add("3"); 31 sets1.add("1"); 32 sets1.add("3"); 33 sets1.add("2"); 34 } 35 /** 36 * 遍历一个set 37 */ 38 public static void bianli(){ 39 for(String s1 : sets1){ 40 System.out.print(s1+"\t"); 41 } 42 } 43 44 /** 45 * 把一个list存到一个set中 46 */ 47 public static void save_to_set_from_list(){ 48 List<String> lists = new ArrayList<>(); 49 lists.add("1"); 50 lists.add("2"); 51 lists.add("3"); 52 lists.add("4"); 53 lists.add("5"); 54 lists.add("3"); 55 56 sets1.addAll(lists); 57 } 58 59 /** 60 * 使用Iterator遍历set 61 */ 62 public static void binali_sets1_iterator(){ 63 Iterator<String> ite = sets1.iterator(); 64 while(ite.hasNext()){ 65 System.out.print(ite.next()+"\t"); 66 } 67 } 68 }
set为继承自collection接口的接口,set里存储的值的类型通过set<object>泛型来声明;存储值时调用HashSet类的add方法,删除时调用用remove方法。
save_to_set方法往set里面存进去了两个1,两个3,一个2,一个null,但是遍历的结果为null,1,2,3;且显示顺序与存储顺序无关,体现了集合的互异性、无序性的特性。因为set里面可以存储空值,且因为set有互异性,所以只能存储一个空值。
save_to_set_from_list方法作用是调用addAll方法往set里面存储值,参数为一个collection容器,比如list容器,此方法可用于从list重筛选出重复的元素。
binali_sets1_iterator方法遍历set除了用for循环外,还可以使用Hashset类中的iterator方法,返回一个装有set容器无序元素的迭代器,然后再调用迭代器iterator方法hashnext和next来遍历元素。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步