【问题标题】:Mapping elements of string array with integer array用整数数组映射字符串数组的元素
【发布时间】:2019-02-23 06:18:24
【问题描述】:

我有一个整数数组和一个字符串,字符串有字符 P 和 N, 我想将字符串的元素与它各自的整数元素进行映射。 例如 int array= 1,2,3,4,5 并且字符串有 PPNPN P->1,P->2,N->3,P->4,N->5.

https://ideone.com/vJldUJ

int array[]={1,2,3,4,5};
String s1="PPNPN";

String []array1=new String[s1.length()];

for(int i = 0; i < s1.length(); i++)
{
    array1[i] = String.valueOf(s1.charAt(i));
}
Map <String,Integer> map1=new HashMap<String,Integer>();

for(int i=0;i<array1.length;i++)
{
    map1.put(array1[i],array[i]);   
}

for (String key : map1.keySet()) 
{
    System.out.println(key + " " + map1.get(key));
}   

它没有打印所有的值。

【问题讨论】:

  • 一张地图不能多次拥有同一个键。如果您放置一个已经存在的键,它只会覆盖该键的现有值。
  • 除了映射还有其他方法吗?
  • 您可能想要使用Map&lt;String, List&lt;Integer&gt;&gt; 或类似的方法来使用单个键存储一堆值
  • 请先了解Map接口的行为。

标签: java arrays mapping


【解决方案1】:

您不能在 HashMap 中使用相同的键。在已经存在的键上向 HashMap 添加新值将覆盖以前的值。 看我为你做了一个替代解决方案https://ideone.com/PT6vvy

class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {

        int array[]={1,2,3,4,5};
        String s1="PPNPN";

        char []array1=s1.toCharArray();
        String out[] = new String[array1.length];
        for(int i = 0; i < array1.length; i++)
        {
            out[i] = array1[i]+" -> "+array[i];
        }


        for (String val : out) 
        {
            System.out.println(val);
        }   
    }
}

【讨论】:

  • 嘿先生,实际上这是我评估的一部分,其中 P 表示正数,N 表示负数,所以我必须将所有元素映射为 N 负数并返回值的总和。
  • 所以,你需要所有负值的总和?
  • 负数和正数之和并返回。
  • 谢谢先生,这几乎概括了我的问题:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-09
  • 1970-01-01
  • 2016-04-27
  • 2021-11-15
  • 1970-01-01
  • 1970-01-01
  • 2012-01-23
相关资源
最近更新 更多