java编程一个相同的数组
发布网友
发布时间:2023-11-08 22:56
我来回答
共2个回答
热心网友
时间:2024-11-08 15:08
import java.util.*;
public class AryTest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("输入list1:");
String[] ss1 = input.nextLine().trim().split("\\s+");// 用空格切分读取的行
int[] list1 = getIntAry(ss1);//从字符串数组转换成int数组
System.out.print("输入list2:");
String[] ss2 = input.nextLine().trim().split("\\s+");
int[] list2 = getIntAry(ss2);
if(ss1[0].equals(ss2[0])){//如果第一个数字指定的个数相同才调用方法比较
System.out.println(equal(list1, list2)?"这两个数列是相同的":"这两个数列是不同的");
}else{//如果第一个数字指定的个数不同,直接判断数列不等
System.out.println("这两个数列是不同的");
}
}
public static Boolean equal(int[] list1, int[] list2) {
Arrays.sort(list1);//两个数组先排序
Arrays.sort(list2);
boolean flag = true;
for (int i = 0; i < list2.length; i++) {//依次比较数组的元素
if(list1[i]!=list2[i]){
flag = false;//如果有不同元素就返回假
break;
}
}
return flag;
}
private static int[] getIntAry(String[] ss) {//字符串数组-->int数组
int size = Integer.parseInt(ss[0]);//第一个表示转换元素的个数, 如果多余指定个数,那么忽略后面的元素
int[] list = new int[size];
for (int i = 1; i <= size; i++) {
list[i - 1] = Integer.parseInt(ss[i]);//转换
}
return list;
}
}
运行测试
输入list1:5 1 2 3 4 5
输入list2:6 1 2 3 4 5 6
这两个数列是不同的
输入list1:5 1 3 2 4 5
输入list2:5 1 2 4 3 5
这两个数列是相同的
输入list1:3 0 0 7
输入list2:3 1 0 7
这两个数列是不同的
热心网友
时间:2024-11-08 15:08
public static Boolean equal(int[ ] list1, int[ ] list2)
{
if(list1.length != list2.length){
return false;
}
java.util.Set<Integer> exceptSet = new java.util.HashSet<Integer>();
for(int i=0 ; i<list1.length ; i++)
{
boolean find = false;
for(int j=0 ; j<list2.length ; j++)
{
if(exceptSet.contain(j)){
continue;
}
if(list1[i] == list2[j])
{
find = true;
exceptSet.add(j);
break;
}
}
if(!find) return false;
}
return true;
}