集合框架之Set学习

前言:

        1、何为框架:可以理解为一个基础结构,在基础结构上进行进一步开发会变得很方便。

         2、三种集合类型:集合(Set) :元素无序不可重复; 列表(List) :元素有序可重复; 映射(Map) :键不可以重复,值可以重复

Set是实现Collection接口的一个子接口。其常用的实现类有HashSet、LinkedHashSet、TreeSet等。下面将从“set和hashSet的一些用法、set和LinkedHashSet的一些用法”来进行学习总结。

HashSet常用方法的总结:   
public static void BestTest() {
// set和hashSet的一些用法
//HashSet<String> hashSet = new HashSet<String>();
//hashSet向上转型为Set类型,上面声明Set的方法不建议使用
Set<String> set = hashSet;
Set<String> set = new HashSet<String>();
boolean b1 = set.isEmpty();
System.out.println(b1);

set.add("a");
set.add("b");
set.add("c");
set.add("d");
set.add("c"); //重复元素会忽略掉

boolean b2 = set.isEmpty();
System.out.println(b2);

int i = set.size();
System.out.println("clear之前总的元素为:"+i);
set.remove("a");

set.clear();
int j = set.size();
System.out.println("clear之后总的元素为:"+j);
}

为什么使用Iterator遍历Set集

public static void setTest() {
        Set<String> set = new HashSet<String>();
set.add("a");
set.add("b");
set.add("c");
set.add("d");
set.add("c"); //重复元素会忽略掉


// 调用Set对象的iterator(),会生成一个迭代器对象,该对象用于遍历set
Iterator<String> it = set.iterator(); // 这里进行泛型设置
// while用于不定次数的循环
while (it.hasNext()) {
System.out.println(it.next()); //取出元素并将游标向后移动1位
}
}
总结:因为set是无序的,不能通过下标取,只能通过迭代器Iterator取。
hasNext():有没有下一个元素。next():返回游标所指元素的元素(将其取出),并将游标向后挪一位。

继承关系:Iterator <-- Collection <-- Set(List) <-- HashSet

LinkedHashSet
LinkedHashSet:使用链表维护了一个添加进集合的顺序。导致我们“遍历”该集合元素时,是按照添加进去的顺序遍历的(这个并不能说明是有顺序的,因为set本身就是“无序且不可重复的”) 。

LinkedHashSet插入性能略低于HashSet。linkedHashSet的迭代访问性能高于HashSet
 
public static void testLinkedHashSet() {
Set set = new LinkedHashSet();
set.add(123);
set.add(456);
set.add("A");
set.add(null);

Iterator iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
原文地址:https://www.cnblogs.com/kelly-one/p/8324606.html