Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 如何在比较字符串数组和HashMap时发现差异?_Java_Arrays_String_Hashmap - Fatal编程技术网

Java 如何在比较字符串数组和HashMap时发现差异?

Java 如何在比较字符串数组和HashMap时发现差异?,java,arrays,string,hashmap,Java,Arrays,String,Hashmap,我有一个如下的字符串数组: String[] a={"Hi","Hello","Dear","Jungle"}; Map<String, String> map=new HashMap<>(); map.put("Hi", "1"); map.put("Hello", "2"); map.put("Dear", "3"); map.put("Jungle", "4"); map.put("Sai", "5"); map.put("Surya", "6"); int c

我有一个如下的字符串数组:

String[] a={"Hi","Hello","Dear","Jungle"};
Map<String, String> map=new HashMap<>();
map.put("Hi", "1");
map.put("Hello", "2");
map.put("Dear", "3");
map.put("Jungle", "4");
map.put("Sai", "5");
map.put("Surya", "6");
int c=0;
for(String key: map.keySet()){
    c=0;
    for (int i = 0; i < a.length; i++) {

        if(key.equals(a[i])){
            c++;
            System.out.println("App :"+ key+"present in DB , SO it is passed.");
        }               
    }
    if(c==0){
        System.out.println("App not present in DB, SO it might have failed");
    }
}
我有这样一个HashMap:

String[] a={"Hi","Hello","Dear","Jungle"};
Map<String, String> map=new HashMap<>();
map.put("Hi", "1");
map.put("Hello", "2");
map.put("Dear", "3");
map.put("Jungle", "4");
map.put("Sai", "5");
map.put("Surya", "6");
int c=0;
for(String key: map.keySet()){
    c=0;
    for (int i = 0; i < a.length; i++) {

        if(key.equals(a[i])){
            c++;
            System.out.println("App :"+ key+"present in DB , SO it is passed.");
        }               
    }
    if(c==0){
        System.out.println("App not present in DB, SO it might have failed");
    }
}
1。)我们如何知道数组中缺少哪个键? 2.)如何将缺少的字符串添加到数组中?

编辑:我的问题不是迭代HashMap。 我的问题是如何找出差异并将其存储回数据结构中。
请阅读我的问题,如果您觉得有问题,请将其标记为重复。

使用Guava library实现此功能非常简单,有关更多信息,请参阅文档:

使用Java-8功能,我正在打印它,但您可以对itemsNotFoundInArray进行迭代,并将缺少的项添加到数组中

final Set<String> itemsFromArray = Sets.newHashSet(a);
final Set<String> itemsFromMap= map.keySet();
Sets.SetView<String> itemsNotInArray = Sets.difference(itemsFromMap, itemsFromArray);
itemsNotInArray.forEach(System.out::println);
final Set itemsFromArray=Sets.newHashSet(a);
最终设置itemsFromMap=map.keySet();
Sets.SetView itemsNotInArray=Sets.difference(itemsFromMap,itemsFromArray);
itemsNotInArray.forEach(System.out::println);

首先,如果要向数组中添加某些内容,则需要使用动态数组,除非事先创建了较大的数组。ArrayList将是一个很好的候选人。一旦你建立了一个ArrayList,那么完成你的任务需要2到3个线性代码

    String[] staticArray = new String[] { "Hi","Hello","Dear","Jungle"};
    ArrayList myList = Arrays.asList(staticArray);
    for(String key: map.keySet()){
    if(!myList.contains(key){
         myList.add(key);    
      }
    }

您只需要更改代码中的一些内容,请尝试下面的代码

 public class TestingApplication 
    {
        public static void main(String[] args) 
        {
            String[] a = { "Hi", "Hello", "Dear", "Jungle" };
            Map<String, String> map = new HashMap<>();
            map.put("Hi", "1");
            map.put("Hello", "2");
            map.put("Dear", "3");
            map.put("Jungle", "4");
            map.put("Sai", "5");
            map.put("Surya", "6");
            List<String> missedKeyList = new ArrayList<>();
            for (String key : map.keySet()) 
            {
                int c = 0;
                for (int i = 0; i < a.length; i++) 
                {
                    if (key.equals(a[i])) 
                    {
                        c++;
                        System.out.println("App: " + a[i] + " present in DB , So it is passed.");
                        break;
                    }
                }

                if (c == 0) 
                {
                    System.out.println("App: " + key + " not present in DB, So it might have failed");
                    missedKeyList.add(key);
                }
            }

            String[] allKey = Arrays.copyOfRange(a, 0, a.length + missedKeyList.size());
            int counter = a.length;
            for(String missedKey : missedKeyList)
            {
                allKey[counter] = missedKey;
                counter++;
            }
        }
    }
公共类测试应用程序
{
公共静态void main(字符串[]args)
{
字符串[]a={“你好”、“你好”、“亲爱的”、“丛林”};
Map Map=newhashmap();
地图放置(“Hi”,“1”);
放在地图上(“你好”,“2”);
地图放置(“亲爱的”,“3”);
地图放置(“丛林”、“4”);
地图放置(“Sai”、“5”);
地图放置(“Surya”,“6”);
List missedKeyList=new ArrayList();
for(字符串键:map.keySet())
{
int c=0;
for(int i=0;i
迭代hashmap:@RafiduzzamanSonnet迭代hashmap不是我的问题。我想知道如何找到数据中的差异。
如果(c==0){…}
这意味着数组中不存在
键,对吗?因此,您知道数组中缺少哪个键。这是你的第一个答案。要将缺少的键添加到数组中,可以将
String[]a
设置为arraylist而不是数组。因此,如果您从一开始就创建一个
a
数组列表,那么您可以在
if
条件中执行此操作:
a.add(key)