Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 你能等信号一套吗?_Java_Set - Fatal编程技术网

Java 你能等信号一套吗?

Java 你能等信号一套吗?,java,set,Java,Set,假设我有一个程序,集合中的用户目标称为“计算机”。用户在“computer”、“computer”、“computer”中输入,但由于未正确大写,因此从未找到它 你将如何着手进行一组单词=。。。并在集合中获取信息,检查它是否等于“计算机”,但忽略大小写。噢!使其成为小写,但第一个字符除外 示例代码: Set<String> words= this.getConfig().getConfigurationSection("Test").getKeys(false); if( a

假设我有一个程序,集合中的用户目标称为“计算机”。用户在“computer”、“computer”、“computer”中输入,但由于未正确大写,因此从未找到它

你将如何着手进行一组单词=。。。并在集合中获取信息,检查它是否等于“计算机”,但忽略大小写。噢!使其成为小写,但第一个字符除外

示例代码:

Set<String> words= this.getConfig().getConfigurationSection("Test").getKeys(false);
    if( allGroups.contains('Computer') ) {
Set words=this.getConfig().getConfigurationSection(“测试”).getKeys(false);
if(allGroups.contains('Computer')){
请忽略this.getConfig().getConfigurationSection(“Test”).getKeys(false);。我正在寻找修复我正在制作的Minecraft插件的答案,但这似乎是一个更基本的Java知识问题

谢谢大家的帮助,伙计们,你可以使用,因为它可以对输入进行排序,可以使用比较器。使用比较器,你可以实现你想要的行为。比如

Comparator<String> comparator = new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        if (o1 == o2) {
            return 0;
        }
        if (o1 == null) {
            return -1;
        } else if (o2 == null) {
            return 1;
        }
        return o1.toLowerCase().compareTo(o2.toLowerCase());
    }
};
Set<String> set = new TreeSet<>(comparator);

多亏埃利奥特提醒了我,我最终解决了这个问题

Set<String> words= new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
words.addAll(this.getConfig().getConfigurationSection("Test").getKeys(false));

args[0] = args[0].toLowerCase();
args[0] = args[0].substring(0, 1).toUpperCase() + args[0].substring(1);

if( words.contains(args[0]) ) {
Set words=new TreeSet(字符串不区分大小写\u顺序);
words.addAll(this.getConfig().getConfigurationSection(“Test”).getKeys(false));
args[0]=args[0].toLowerCase();
args[0]=args[0]。子字符串(0,1)。toUpperCase()+args[0]。子字符串(1);
if(words.contains(args[0])){
虽然在我的书中这不是一个很好的解决方法,但我已经用我编写的ATM程序使用了同样的方法来解决这个问题。我目前正在考虑一种方法,使字符串“args[0]”只需要一行就可以解决所有问题,但这正是目前对我有效的方法


谢谢!

您可以使用带有
比较器的
树集
,该比较器返回
string1.toLowerCase().compareTo(string2.toLowerCase())
。是的@pbabcdefp是正确的,只需添加即可。设置s1=新树集(String.CASE\u不区分大小写\u顺序);不知道已经有一个比较器了!有必要为此编写比较器吗?@viraj取决于Java的版本。在1.2之前,是的。而且,编写比较器并不困难,它有助于演示这个概念。ok@ElliottFrisch..谢谢,我不知道Java 1.2..很高兴知道。@E让我惊讶的是,这有点奏效。我刚刚用了第二部分(TreeSet).所以,它没有破坏我的程序,但它没有返回'Computer'的值。我可以输入'Computer',它将返回null,但我如何让它返回'Computer'的值?我想我将尝试使用一些魔法,以获得所需的字符串值,然后如果我可以将其转换为字符串,我将能够如何操作它我想@Dom
if(allGroups.contains(“Computer.toLowerCase()){
-Java
String
文本是双引号。我提供的自定义比较器通过比较小写的
String
(s)来忽略大小写。
Set<String> words= new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
words.addAll(this.getConfig().getConfigurationSection("Test").getKeys(false));

args[0] = args[0].toLowerCase();
args[0] = args[0].substring(0, 1).toUpperCase() + args[0].substring(1);

if( words.contains(args[0]) ) {