王柳 发表于 2022-6-24 10:43:00

Java集合:Set集合的使用

先看集合框架图:
https://img-blog.csdnimg.cn/0f5ce0727c6a4066a8d93949e049f449.png
Set有HashSet和TreeSet两种实现类。
先看Set:
特点:无序、无下标、元素不可重复
方法:全部继承自Collection中的方法
增、删、遍历、判断与collection一致
看代码:
package com.collections.set;

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

/**
* set的使用
* 特点:(1)无序(2)不能重复
* @author 华子
*/
public class Demo01 {
    public static void main(String[] args) {
      Set<String> set = new HashSet<>();
//      添加
      set.add("小米");
      set.add("苹果");
      set.add("华为");
      set.add("华为");
      System.out.println(set.size());
      System.out.println(set.toString());
//      删除
//      set.remove("苹果");
//      System.out.println("删除后:"+set.size());
//      System.out.println(set.toString());
//      遍历
//       增强for
      for (String s :set
             ) {
            System.out.println(s);
      }
      System.out.println("------------------------");
//      迭代器
      Iterator<String> iterator = set.iterator();
      while (iterator.hasNext()){
            String s = iterator.next();
            System.out.println(s);
      }
      System.out.println("------------------------");
      for (String s :set) {
            System.out.println(s);
      }
//      判断
      System.out.println(set.contains("华为"));
      System.out.println(set.isEmpty());
    }
} 和之间的集合使用方法类似。
HasSet【重点】

存储结构:哈希表(数组+链表+红黑树)
存储过程(重复依据)

[*]根据hashCode计算保存的位置,如果位置为空,直接保存,若不为空,进行第二步
[*]再执行equals方法,如果equals为true,则认为是重复,否则形成链表
特点
存储过程:
<ul>基于HashCode计算元素存放位置   <ul>
利用31这个质数,减少散列冲突   <ul>
31提高执行效率 31 * i = (i
页: [1]
查看完整版本: Java集合:Set集合的使用