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)