gpt4 book ai didi

java - 创建一个忽略大小写的 TreeSet

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:44:34 25 4
gpt4 key购买 nike

关于 Java 集合框架的 Java 教程中的一个练习要求使用 SortedSet 来消除参数的重复项,并指定一个比较器,以便在排序和识别集合元素时忽略大小写。

具体要求如下:“采用 FindDupsexample 并将其修改为使用 SortedSet 而不是 Set。指定 Comparator,以便在排序和识别 set 元素时忽略大小写。”

这是 FindDupsExample:

import java.util.*;
public class FindDups {
public static void main(String[] args) {
Set<String> s = new HashSet<String>();
for (String a : args)
s.add(a);
System.out.println(s.size() + " distinct words: " + s);
}
}

我能想出的最多实现所需行为的方法(通过考虑一次用小型大写字母和另一次用大写字母作为重复的单词来消除重复项)是下面的代码,但我不知道如何使用 Comparator 和 SortedSet。我在示例中使用的是 SortedSet,但我也可以使用简单的 Set:

public class FindDups {
public static void main(String[] args) {
Set<String> s = new HashSet<String>();
List<String> list = new ArrayList<String>();
SortedSet<String> eliminatedDups = null;

for (String a : args) {
s.add(a);
list.add(a.toLowerCase());
}
eliminatedDups = new TreeSet<String>(list);

System.out.println(s.size() + " distinct words by taking into consideration the case: " + s);
System.out.println(list.size() + " initial list translated into all small caps: " + list);
System.out.println(eliminatedDups.size() + " distinct words by ignoring case: " + eliminatedDups);
}

如何使用 SortedSet 和 Comparator 来获得所需的效果?

谢谢,


受到SJuan76的启发,终于想出了:

public class FindDupsFinal {
public static void main(String[] args) {
SortedSet<String> eliminatedDups2 = new TreeSet<String>(IGNORE_CASE);

for (String a : args) {
eliminatedDups2.add(a);
}
System.out.println(eliminatedDups2.size() + " distinct words by ignoring case: " + eliminatedDups2);
}

static final Comparator<String> IGNORE_CASE = new Comparator<String>() {
public int compare(String s1, String s2) {
return s1.compareToIgnoreCase(s2);
}
};

最佳答案

SortedSet<String> eliminatedDups =
new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
Collections.addAll(eliminatedDups, args);

关于java - 创建一个忽略大小写的 TreeSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22824438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com