Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/79: Рейтинг темы: голосов - 79, средняя оценка - 4.70
13 / 13 / 6
Регистрация: 07.02.2013
Сообщений: 214

Как сравнить два массива с числами

15.02.2014, 17:23. Показов 14599. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть два обычных массива типа Integer:
Java
1
2
private int arr1[] = new int[10];
private int arr2[] = new int[10];
Ну и допустим туда загрузим несколько чисел:
Java
1
2
3
4
5
6
7
for (int i = 0; i < 7; i++) {
    arr1[i] = i;
}
 
for (int i = 0; i < 5; i++) {
    arr2[i] = i;
}
Как сравнить эти два массива?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.02.2014, 17:23
Ответы с готовыми решениями:

Как сравнить два строковых массива?
Добрый день. Пробую сравнить два строковых массива, а если точнее надо сравнить 1 строку с первой второго массива, вторую со Если...

Сравнить два массива на полное совпадение
Написать программу, сравнивающую два массива на их полное совпадение. то есть нужно сравнивать как по сумме чисел и по равенству каждого...

Как сравнить два изображения ?
Как мне узнать являются ли изображения из одного файла, на пример: Image img1=getImage(getCodeBase, '1.gif'); Image...

8
любитель покушать
 Аватар для Севак
687 / 641 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
15.02.2014, 17:30
Declarer, по какому признаку хотите сравнивать числа? больше/меньше? сравнивать каждые элементы? распишите подробно
предложу такой вариант:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.sevak_avet.Test;
 
import java.util.Arrays;
import java.util.Random;
 
public class Test {
    public static void main(String[] args) {
        int[] a = new int[10];
        int[] b = new int[10];
 
        Random r = new Random();
        int lessCount = 0;
        int largerCount = 0;
                
        for (int i = 0; i < 10; ++i) {
            a[i] = r.nextInt(10);
            b[i] = r.nextInt(10);
            
            if(a[i] < b[i]) {
                ++lessCount;
            } else if(a[i] > b[i]) {
                ++largerCount;
            }
        }
        
        System.out.println(Arrays.toString(a));
        System.out.println(Arrays.toString(b));
        
        if(lessCount > largerCount) {
            System.out.println("a < b");
        } else if(largerCount > lessCount) {
            System.out.println("a > b");
        } else {
            System.out.println("a = b");
        }
    }
}
1
13 / 13 / 6
Регистрация: 07.02.2013
Сообщений: 214
15.02.2014, 17:35  [ТС]
Нужно проверить равенство этих массивов.
0
любитель покушать
 Аватар для Севак
687 / 641 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
15.02.2014, 18:18
Лучший ответ Сообщение было отмечено Declarer как решение

Решение

Declarer,
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.sevak_avet.Test;
 
import java.util.Arrays;
 
public class Test {
    public static void main(String[] args) {
        int[] a = new int[10];
        int[] b = new int[10];
                
        for (int i = 0; i < 10; ++i) {          
            a[i] = i;
            b[i] = i;
        }
        
        System.out.println(Arrays.equals(a, b));
    }
}
2
13 / 13 / 6
Регистрация: 07.02.2013
Сообщений: 214
15.02.2014, 18:33  [ТС]
Спасибо, работает!
0
любитель покушать
 Аватар для Севак
687 / 641 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
16.02.2014, 23:53
Declarer, пожалуйста! на самом деле, если заглянуть в исходники Arrays.equals(), все станет очевидно:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (a==a2) // если ссылки совпадают, то, понятное дело, массивы одинаковые
    return true;
if (a==null || a2==null) // если один из массивов - null, то говорить о равенстве не приходится
    return false;
 
int length = a.length;
if (a2.length != length) // если длинны массивов различаются, то все понятно
    return false;
 
for (int i=0; i<length; i++) // ну а тут обычный проход по массиву
    if (a[i] != a2[i]) // и сравнение элементов, найдя хотя-бы одну неравную пару элементов
        return false; // можно сделать определенные выводы
 
return true;
1
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
17.02.2014, 00:21
Севак, там ещё есть deepEquals рекомендую тоже заглянуть )
1
любитель покушать
 Аватар для Севак
687 / 641 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
17.02.2014, 00:56
mutagen, о, господи
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public static boolean deepEquals(Object[] a1, Object[] a2) {
        if (a1 == a2)
            return true;
        if (a1 == null || a2==null)
            return false;
        int length = a1.length;
        if (a2.length != length)
            return false;
 
        for (int i = 0; i < length; i++) {
            Object e1 = a1[i];
            Object e2 = a2[i];
 
            if (e1 == e2)
                continue;
            if (e1 == null) // раз так, почему e2 на null не проверяется?
                return false;
 
            // Figure out whether the two elements are equal
            boolean eq = deepEquals0(e1, e2);
 
            if (!eq)
                return false;
        }
        return true;
    }
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
static boolean deepEquals0(Object e1, Object e2) {
        assert e1 != null;
        boolean eq;
        if (e1 instanceof Object[] && e2 instanceof Object[])
            eq = deepEquals ((Object[]) e1, (Object[]) e2);
        else if (e1 instanceof byte[] && e2 instanceof byte[])
            eq = equals((byte[]) e1, (byte[]) e2);
        else if (e1 instanceof short[] && e2 instanceof short[])
            eq = equals((short[]) e1, (short[]) e2);
        else if (e1 instanceof int[] && e2 instanceof int[])
            eq = equals((int[]) e1, (int[]) e2);
        else if (e1 instanceof long[] && e2 instanceof long[])
            eq = equals((long[]) e1, (long[]) e2);
        else if (e1 instanceof char[] && e2 instanceof char[])
            eq = equals((char[]) e1, (char[]) e2);
        else if (e1 instanceof float[] && e2 instanceof float[])
            eq = equals((float[]) e1, (float[]) e2);
        else if (e1 instanceof double[] && e2 instanceof double[])
            eq = equals((double[]) e1, (double[]) e2);
        else if (e1 instanceof boolean[] && e2 instanceof boolean[])
            eq = equals((boolean[]) e1, (boolean[]) e2);
        else
            eq = e1.equals(e2); // и в конце концов, если ни один из if'ов не подойдет, то заюзается 
        return eq; // стандартная реализация из Object 
    }
они специально юзали instanceof? он же вроде медленный
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
17.02.2014, 11:32
Цитата Сообщение от Севак Посмотреть сообщение
он же вроде медленный
медленный так как разматывает всю иерархию классов, но в случае с примитивами её разматывать некуда - поэтому ок
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.02.2014, 11:32
Помогаю со студенческими работами здесь

Как сравнить два цвета?
Всем привет. Подскажите начинающему програмировать как можна сравнить два цвета один и котрых задан ро умолчанию, а второй должен браться...

Как сравнить два Object? (>,<,=>,<=)
это части кода которые задействованы : Object ColomnName = new String{ &quot;Router brand&quot;, ...

Как сравнить два числа типа string?
Я ввожу два числа типа string. Как мне их сравнить(т.е. как применить операции &lt;,&gt;,&gt;=,&lt;=)?

Имеются два числа long, как их сравнить между собой?
привет всем. прошу не ругаться. Но есть вопрос.....имеются два числа long. как их сравнить между собой?

Массив: Сравнить два массива и добавить в массив two недостающие элементы
В примере 1, есть два таких массива: //Первый ftpClient.changeWorkingDirectory(&quot;\\hel\\xl\\one\&quot;); FTPFile files =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru