业务背景:比较两个数组元素是否相同,或者数组A的元素是否包含数组B
方法1:使用jdk方法
public static void main(String[] args) {
String [] array1 = {"1","2","3","4"};
String [] array2 = {"3","2","1"};
if(array1.length !=array2.length){
System.out.println("两个数组中的元素值不相同");
}
Arrays.sort(array1);
Arrays.sort(array2);
if (Arrays.equals(array1, array2)) {
System.out.println("两个数组中的元素值相同");
} else {
System.out.println("两个数组中的元素值不相同");
}
for(String item:array1){
if(!Arrays.asList(array2).contains(item)){
System.out.println("数组array2不包含array1");
}
}
}
方法2:利用hashmap 循环数组1进行key占位,当循环数组2时,get(key)是否存在,不存在则不相等,不包含关系,时间复杂度为O(n)
public static void main(String[] args) {
String [] array1 = {"1","2","3"};
String [] array2 = {"3","2","1"};
boolean result=checkArraysIsEqual(array1,array2);
if(!result){
System.out.println("两个数组中的元素值不相同");
}
}
private static boolean checkArraysIsEqual(String[] array1, String[] array2) {
Map<String,Integer> map1=new HashMap<String, Integer>();
for(String item1:array2){
map1.put(item1,1);
}
for(String item2:array1){
Integer result = map1.get(item2);
if(result ==null){
return false;
}
continue;
}
return true;
}