day17 Java学习(Set集合)
框架集合(HashSet存储字符串并遍历)
Ser集合:无索引,不可以重复,无序(存取不一致)。
实例:
/* * Set集合无索引,不可以重复,无序(存取不一致)。 */ HashSet<String> list=new HashSet<>(); //创建HashSet对象 // boolean b1=list.add("a"); // boolean b2=list.add("a"); //当向set集合添加重复元素为false list.add("v"); list.add("z"); list.add("c"); for (String string : list) { System.out.println(string); }
框架集合(HashSet如何保证元素唯一性)
1.HashSet原理
* 我们使用Set集合都是需要去掉重复元素的。
2. 将自定义类的对象存入HashSet去重复
* 类中必须重写hashCode( ) 和equals( )方法。
框架集合(LinkedHashSet)
LinkedHashSet:底层是链表实现的,是Set集合中唯一一个能保证怎么存就怎么取的集合对象。
因为是HashSet的子类,所以也是保证元素唯一的。
/* *取除List集合中的重复元素 */ public static void getSingle(List<String> list) { // 创建一个LinkedHashSet集合 LinkedHashSet<String> list1 = new LinkedHashSet<>(); // 将List集合中的所有元素添加到LinkedHashSet集合。 list1.addAll(list); // 将List集合中的元素清除。 list.clear(); // 将LinkedHashSet集合中的所有元素重新添加到List集合。 list.addAll(list1); }
框架集合(TreeSet存储Integer类型元素并遍历)
TreeSet集合是用来对象元素进行排序的,同样它也可以保证元素的唯一。
public static void sort(ArrayList<String> list) { //创建TreeSet集合对象,本身具备比较功能,但是重复不会保留,所以我们用比较器 (匿名内部类) TreeSet<String> ts=new TreeSet<>(new Comparator<String>() { @Override public int compare(String s1, String s2) { // TODO 自动生成的方法存根 int num = s1.compareTo(s2); return num == 0 ? 1 : num; } }); //2.将list集合中的元素添加到TreeSet集合中,对其排序,保留重复 ts.addAll(list); // 3.清空list集合 list.clear(); // 4.将TreeSet集合中排好序的元素添加到list中 list.addAll(ts); }