存储字符串并忽略字母大小写的数据结构

时间:2015-07-13 13:17:36

标签: java string data-structures set

我知道HashSet<String>数据结构可以存储唯一的字符串,并说明字符串是否存在O(1)复杂性,因为它使用哈希码。如果我想忽略字母案例,可以达到同样的复杂性吗?下一个用例应该有效:

Set<String> set = new IgnoreLetterCaseSet();
set.add("New York");
set.contains("new york") == true;
set.contains("NEW YORK") == true;

set.each(it -> print it) ---> prints "New York"

是否可以实现这样的数据结构?

3 个答案:

答案 0 :(得分:6)

也许TreeSet正在寻找什么?

TreeSet<String> ts=new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);

答案 1 :(得分:3)

只需使用原始字符串作为值的HashMap,使用密钥

的小写字母
Thread.dumpStack();

答案 2 :(得分:0)

我不熟悉HashSet,但这里有两个关于如何做到这一点的想法:

  1. 定义一个新的比较器,用于忽略大小写的HashSet
  2. string持有所有具有相同密钥的New York列表。也就是说,NEW YORKnew york都位于密钥major.minor 52.0下的列表中。