使用HashSet作为常量

use*_*702 0 java constants hashset

我有一个方法,用于将对象的映射转换为人类可读的键值对.为此,我需要一些字符,如引号,空格和反斜杠,默认情况下将被解释为控制字符,如果在键或值中使用,则需要转义.由于不会有任何重复,我需要快速查找,我假设一个集合将是最好的选择,但作为(对我的知识)你不能锁定一个集合,它可能会被意外更改.

将HashSet作为常量是否是个好主意,有没有办法使它成为不可变的,遵循常量命名约定(UPPER_CASE)以及如何在其中放置初始值是一个好主意?

SMA*_*SMA 5

您可以使用Collections.unmodifiableSet,使您的集在创建后不可变.如果您不想在对象集合中使用重复元素,请使用set.可选地,myset中的元素也是不可变的,因此没有人可以修改集合中的元素或元素的状态.

Set<String> elementSet = new HashSet<String>();
elementSet.add("abc");//to populate
elementSet.add("pqr");
Collections.unmodifiableSet(elementSet);
Run Code Online (Sandbox Code Playgroud)