java - 将列表作为值插入映射中

标签 java hibernate dictionary arraylist

我收到了 List<String>形成 hibernate,其中包含 completeFileAddress .

CompleteFileAddress我从 List 获取是:

192.168.1.1/var/local/files/20140116/8800399421_4007_20140116_151718
192.168.1.2/var/local/files/monitor/20140115/9654180710_4006_20140115
192.168.1.1/var/local/files/20140116/8800399421_4007_20140116_120042
192.168.1.1/var/local/files/20140116/138_4007_20140116_122719

然后我 split 了CompleteFileAddress获取IPAddressFilePath分别将值放入 Map<String, List<String>> 中其中键是 IPAddress值是 FilePath 的列表.

我的代码是:

   List list = criteria.list();
            for (Iterator it = list.iterator(); it.hasNext();) {
                String completeFileAddress = (String) (it.next());
                System.out.println("Complete add : " + completeFileAddress);
                if (completeFileAddress != null) {
                    int index = completeFileAddress.indexOf("/");
                    String serverIP = completeFileAddress.substring(0, index);
                    String filePath = completeFileAddress.substring(index, completeFileAddress.length()) + ".WAV";
                    filesMap.put(serverIP, sourceFileList); //sourceFileList is declared as an instance variable
                    sourceFileList.add(filePath);
                }
            }
        System.out.println("List '1' size :" + filesMap.get("192.168.1.1").size());
        System.out.println("List '2' size :" + filesMap.get("192.168.1.2").size());

我正在获取两者的大小 List4 ,但我想要 List1 = 3 的大小和List2 = 1因为我在服务器上有 3 个文件 192.168.1.1只有一个在 192.168.1.2 .

我怎样才能实现这个目标???

最佳答案

  • 您将相同的对放入映射中,并为两个键引用相同的列表。
  • 您可以检查映射是否包含键(如果存在)只需检索值(即列表)并将filePath添加到该列表
  • 如果 key 不存在,则创建新列表并将 filePath 添加到新创建的列表中,最后将 keyvalue 添加到映射<

试试这个代码

String serverIP = completeFileAddress.substring(0, index);
String filePath = completeFileAddress.substring(index, completeFileAddress.length()) + ".WAV";
if(filesMap.containsKey(serverIP))
{
   ArrayList<String> sourceList = filesMap.get(serverIP);
   sourceList.add(filePath);
}
else
{
   ArrayList<String> sourceList = new ArrayList<String>();
   sourceList.add(filePath);
   filesMap.put(serverIP, sourceFileList);
}

关于java - 将列表作为值插入映射中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21575502/

相关文章:

python - 同时将字典的所有值替换为零 python

java - java中两个整数值相等?

Java:ByteBuffer 与 jdk.incubator.foreign(巴拿马)外部内存方法(MemoryLayout/Segment)的性能对比

java - 使用 LinkedQueue 模拟购物线

java - 如何根据指定的 JTextField 移动多个 JSlider

java - 执行PreparedStatement select失败

java - 映射列的 JPA i18n 问题

java - Hibernate 表不会自动创建

java - Hibernate 实体中的 Postgres 数组

java - 为 Java 7 使用快速且恒定的 get() 进行映射