Java – Set 的介绍及应用

阅读时间: 10分钟

Set是一个Interface。
有最简单的Collection资料结构 - 集合。
Set 唯一的限制是不允许重覆的物件存在。
所以当你不想有相同的物件出现,就可以选择用Set,同时选择合适的实作。

Set常用的实作主要有3个:
• LinkedHashSet
保证里面元素存放的顺序与新增时相同。最适合拿来存放由资料库中存取的资料集。
• HashSet
读取特快,但不保证存放元素的顺序。
• TreeSet
依物件大小来决定集合里面的顺序。所以存放于TreeSet中元素必需是(实作) Comparable的物件。有时候当从自料库中存取的资料必需自行排序时,就会用到。

例子解释:
检查字串(String)有多少个单字不重複。

import java.util.*;/*英文字数计算*/public class EnglishWordCount {    public static void main(String[] args) {        String line = input("请输入一段英文:");        Set<String> words = tokens(line);        System.out.printf("结果: 没有重複的单字有%d个 = %s%n",                words.size(), words);    }/*英文文字输入*/    static String input(String prompt) {        System.out.print(prompt);        Scanner scanner = new Scanner(System.in);        String line = scanner.nextLine();        return line;    }        /*切割文字,实作使用LinkedHashSet储存 */static Set<String> tokens(String line) {        String[] tokens = line.split(" ");        Set<String> words = new LinkedHashSet <>();        for(String token : tokens) {            words.add(token);        }        return words;    }}

程式详解:
首先由于String line = input("请输入一段英文:");,所以会直接跑Method input(),而在input()内,会直接输出那段文字 “请输入一段英文:”,之后就要求你输入一段交字。而你所输入的文字会储存在一个类型为String 名字是line内。
然而下一句code是Set words = tokens(line);,
这表刚刚输入的文字会被转移存在另一个变数”words”,而words是一个Set,可以不允许重覆的物件存在。
而在转到”words”之前,其实它已经触动到Method tokens(),所以会去跑token()。
在token()内,那段文字会先被split(切割),以”空白”来区分每个英文文字,之后再储存在一个名为tokens的String array。
再说明一下,由于Set只是interface,所以必须实作,而这次是实作LinkedHashSet。
主要目的是保证里面元素存放的顺序与新增时相同。
接着透过for loop将token array的资料转移到words,最后return words(即是最后结果)出去。

结果是什么 ?
大家可以自行複杂上面的代码去测试一下。

另外,3个set的实作都有不同功能,你可以根据你的实际需要而作出最佳选择。


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章