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());
   }
}
  • 输出
返回值:我的示例文本

您还可以将其放在地图上,并进行foreach循环,以检查主机或名称是否已在地图中

我希望你能明白。如果有任何问题,请在下面进行评论。谢谢


是否需要保留外壳?如果没有,在放置它们时,您可以始终将它们存储为所有小写,以便以后检查。您在地图的行为中没有选项。无论出于何种目的,该映射的行为都类似于常规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());
   }
}