Java Set的遍历测试

7 篇文章 0 订阅

三种Set的实现

TreeSet,HashSet, LinkedHashSet的实现都是基于三种TreeMap,HashMap,LinkedHashMap,所它们的遍历器实现是基于这种三种map的遍历器

遍历的特点

TreeSet通过红黑树实现的,是有序的
HashSet通过数组,链表,红黑树,因为hash值计算和hash处理函数导致,数组中的元素是无序的
LinkedHashSet是根据LinkedHashMap实现,用一个双向链表实现的,默认是按照插入顺序访问的。

代码测试

package com.java.javabase.map;

import lombok.extern.slf4j.Slf4j;

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

@Slf4j
public class SetTest {
    public static void main(String[] args) {
        HashSet hashset = new HashSet();
        initSet(hashset);
        setIterator(hashset, "test Hash set:");

        TreeSet treeSet = new TreeSet();
        initSet(treeSet);
        setIterator(treeSet, "test TreeSet");
        setIterator(treeSet.subSet("7", "99"), "test TreeSet sub");

        LinkedHashSet linkedHashSet = new LinkedHashSet();
        initSet(linkedHashSet);
        setIterator(linkedHashSet, "test LinkedHashSet");
    }

    private static void initSet(Set set) {

        set.add("7");
        set.add("9");
        set.add("1");
        set.add("10");

    }

    private static void setIterator(Set set, String logdesc) {
        log.info(logdesc);
        Iterator it = set.iterator();
        while (it.hasNext()) {
            log.info("set value {}", it.next());
        }

    }
}

测试结果

D:\zxems\work\OpenJdk\8\bin\java.exe "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2019.1.1\lib\idea_rt.jar=55874:D:\Program Files\JetBrains\IntelliJ IDEA 2019.1.1\bin" -Dfile.encoding=GB2312 -classpath D:\zxems\work\OpenJdk\8\jre\lib\charsets.jar;D:\zxems\work\OpenJdk\8\jre\lib\ext\access-bridge-64.jar;D:\zxems\work\OpenJdk\8\jre\lib\ext\cldrdata.jar;D:\zxems\work\OpenJdk\8\jre\lib\ext\dnsns.jar;D:\zxems\work\OpenJdk\8\jre\lib\ext\jaccess.jar;D:\zxems\work\OpenJdk\8\jre\lib\ext\localedata.jar;D:\zxems\work\OpenJdk\8\jre\lib\ext\nashorn.jar;D:\zxems\work\OpenJdk\8\jre\lib\ext\sunec.jar;D:\zxems\work\OpenJdk\8\jre\lib\ext\sunjce_provider.jar;D:\zxems\work\OpenJdk\8\jre\lib\ext\sunmscapi.jar;D:\zxems\work\OpenJdk\8\jre\lib\ext\sunpkcs11.jar;D:\zxems\work\OpenJdk\8\jre\lib\ext\zipfs.jar;D:\zxems\work\OpenJdk\8\jre\lib\jce.jar;D:\zxems\work\OpenJdk\8\jre\lib\jsse.jar;D:\zxems\work\OpenJdk\8\jre\lib\management-agent.jar;D:\zxems\work\OpenJdk\8\jre\lib\resources.jar;D:\zxems\work\OpenJdk\8\jre\lib\rt.jar;D:\My\code\javalearn\java-learn\target\classes;D:\My\tools\maven\repo\org\slf4j\slf4j-log4j12\1.7.2\slf4j-log4j12-1.7.2.jar;D:\My\tools\maven\repo\org\slf4j\slf4j-api\1.7.2\slf4j-api-1.7.2.jar;D:\My\tools\maven\repo\log4j\log4j\1.2.17\log4j-1.2.17.jar com.java.javabase.map.SetTest
2019-07-22 19:28:52,732   [main] INFO  SetTest  - test Hash set:
2019-07-22 19:28:52,747   [main] INFO  SetTest  - set value 1
2019-07-22 19:28:52,747   [main] INFO  SetTest  - set value 7
2019-07-22 19:28:52,747   [main] INFO  SetTest  - set value 9
2019-07-22 19:28:52,747   [main] INFO  SetTest  - set value 10
2019-07-22 19:28:52,747   [main] INFO  SetTest  - test TreeSet
2019-07-22 19:28:52,747   [main] INFO  SetTest  - set value 1
2019-07-22 19:28:52,747   [main] INFO  SetTest  - set value 10
2019-07-22 19:28:52,747   [main] INFO  SetTest  - set value 7
2019-07-22 19:28:52,747   [main] INFO  SetTest  - set value 9
2019-07-22 19:28:52,747   [main] INFO  SetTest  - test TreeSet sub
2019-07-22 19:28:52,857   [main] INFO  SetTest  - set value 7
2019-07-22 19:28:52,857   [main] INFO  SetTest  - set value 9
2019-07-22 19:28:52,857   [main] INFO  SetTest  - test LinkedHashSet
2019-07-22 19:28:52,857   [main] INFO  SetTest  - set value 7
2019-07-22 19:28:52,857   [main] INFO  SetTest  - set value 9
2019-07-22 19:28:52,857   [main] INFO  SetTest  - set value 1
2019-07-22 19:28:52,857   [main] INFO  SetTest  - set value 10

Process finished with exit code 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值