1.Set集合:
1.1特点:
A.有序
B.对象不可以重复
1.2遍历方式:
A.foreach
B.Iterator(迭代器)
package com.lya.text; import java.util.HashSet; import java.util.Iterator; /** * set的增删改查 * @author lya * */ public class demo1 { public static void main(String[] args) { HashSet hs = new HashSet<>(); // 新增 hs.add("小黑子"); hs.add("小黑子"); hs.add("我不是小黑子"); hs.add("我不是小黑子"); hs.add("你是小黑子"); hs.add("你是小黑子"); for (Object object : hs) { System.out.println(object); } // 这里会输出: // 小黑子 // 你是小黑子 // 我不是小黑子 System.out.println("===========删除==============="); // 删除 hs.remove("小黑子"); // 这里会输出: // 你是小黑子 // 我不是小黑子 // 查看 System.out.println("============foreach遍历=============="); for (Object object : hs) { System.out.println(object); } System.out.println("============迭代器遍历=============="); Iterator it =hs.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } }
注:set集合没有修改的属性;
3.3关于set集合的去重。
3.3.1当我们直接调用contans,没有重写hashcold,equals
3.3.2当我们直接调用contans,重写hashcold,equals
这里我们分析:当hashcold值是一样的时候,就去比较equales值。
3.4关于set集合如何进行排序???
3.4.1可以用到Set集合的子类TreeSet中的:comparable和comparator比较器来进行排序
3.4.2实现comparable接口
从运行结果来看:
①我们在set集合中添加字符串是没问题的。
②我们在set集合中添加对象时,却会报出一个错误
因为我们的自定义对象并没有实现comparable接口或comparator
就不会报错啦!!!
3.4.2实现comparator比较器
3.5关于set集合的子类。
3.4.1.HashSet
它不允许出现重复元素【唯一】;
不保证集合中元素的顺序【无序】
HashSet的实现是不同步的
3.4.2 LinkedHashSet
哈希表和链表实现Set接口,具有可预测的迭代次序;
由链表保证元素有序,也就是说元素的存储和取出顺序是一致的。
由哈希值保证元素唯一,也就是说没有重复的元素
3.4.3TreeSet
TreeSet 是一个有序的集合
作用:提供有序的Set集合
TreeSet是基于TreeMap实现的