Protobuf Java-不区分大小写的映射?
我有一个映射,其中包含一个用户输入的远程机器名,以及一个用户在主机上输入的运行程序名。不希望重复条目,因为用户输入了大写字母,之后输入了相同的小写名称 原型:Protobuf Java-不区分大小写的映射?,java,google-protocol-buffer,protocol-buffers-3,Java,Google Protocol Buffer,Protocol Buffers 3,我有一个映射,其中包含一个用户输入的远程机器名,以及一个用户在主机上输入的运行程序名。不希望重复条目,因为用户输入了大写字母,之后输入了相同的小写名称 原型: map<string, string> host_and_name = 1; 注意,我可以迭代所有映射值,并且只有在找不到EqualCaseInsistive匹配时才能放入。如果有必要的话,我最终会这么做,不过这似乎有点野蛮 如果您需要验证并放入主机和名称映射,您可以将所有字符转换为小写,无论何时放入每个主机或名称,都会将所
map<string, string> host_and_name = 1;
注意,我可以迭代所有映射值,并且只有在找不到EqualCaseInsistive匹配时才能放入。如果有必要的话,我最终会这么做,不过这似乎有点野蛮 如果您需要验证并放入主机和名称映射,您可以将所有字符转换为小写,无论何时放入每个主机或名称,都会将所有字符转换为小写 如下
import java.io.*;
public class Test {
public static void main(String args[]) {
String str = "My Sample Text";
System.out.print("Return Value :");
System.out.println(str.toLowerCase());
}
}
- 输出
是否需要保留外壳?如果没有,在放置它们时,您可以始终将它们存储为所有小写,以便以后检查。您在地图的行为中没有选项。无论出于何种目的,该映射的行为都类似于常规LinkedHashMap。如果您想要“不区分大小写”的键,那么您必须在放置/获取之前通过规范化大小写来处理它。理想情况下,我确实需要保留大小写。键和值都会显示给用户,而大小写的改变会使字符串更难读取。通常,由于业务原因,这些词之间没有空格。首先应该提到这一点,但这是个好问题Nexevis。几乎没有理由写
新字符串(“…”)
。只需使用“…”
。这是一个好主意,不幸的是,正如上面的评论所述,丢弃大小写并不理想,因为这些值会显示回用户。目前,我正在迭代,如果两边相等,则不修改映射,删除值,然后如果键已经存在,则放入。根据Andy Turner关于不区分大小写键没有选项的评论,您似乎强调了我可以使用的两个选项。
import java.io.*;
public class Test {
public static void main(String args[]) {
String str = "My Sample Text";
System.out.print("Return Value :");
System.out.println(str.toLowerCase());
}
}