Progress-servis55.ru

Новости из мира ПК
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Arrays tostring java

Каков самый простой способ печати массива Java?

в Java массивы не переопределяют toString() , поэтому, если вы попытаетесь напечатать его напрямую, вы получите имя класса + @ + шестнадцатеричное значение hashCode массива, как определено Object.toString() :

но обычно мы на самом деле хотим что-то вроде [1, 2, 3, 4, 5] . Какой самый простой способ сделать это? Вот некоторые примеры входов и выходов:

30 ответов:

начиная с Java 5, Вы можете использовать Arrays.toString(arr) или Arrays.deepToString(arr) для массивов в массивах. Обратите внимание, что Object[] версии вызовы .toString() на каждом объекте в массиве. Выход даже оформлен точно так, как вы просите.

Простой Массив:

Вложенный Массив:

double Массив:

int время:

всегда проверяйте сначала стандартные библиотеки. Попробуйте:

или если Ваш массив содержит другие массивы как элементы:

это приятно знать, однако, что касается «всегда проверять стандартные библиотеки в первую очередь» я бы никогда не наткнулся на трюк Arrays.toString( myarray )

—так как я концентрировался на типе myarray, чтобы увидеть, как это сделать. Я не хотел повторять эту вещь: мне нужен был простой вызов, чтобы сделать его похожим на то, что я вижу в отладчике Eclipse и myarray.toString () просто не делал этого.

в JDK1.8 можно использовать агрегатные операции и лямбда-выражение:

Если вы используете Java 1.4, вы можете сделать вместо этого:

(это работает в 1.5+, конечно, тоже.)

начиная с Java 8, можно воспользоваться join() метод String class чтобы распечатать элементы массива без скобок и разделенные разделителем выбора (который является символом пробела для примера, показанного ниже):

выход будет «Эй там Амиго!».

Arrays.deepToString(arr) печатает только на одной линии.

чтобы на самом деле получить таблицу для печати в виде двумерной таблицы, я должен был сделать это:

кажется Arrays.deepToString(arr) метод должен принимать строку, разделитель, но, к сожалению, это не так.

массивы.toString

Java 8-Stream.сбор (присоединение ()), поток.по каждому элементу

ниже я пытаюсь перечислить некоторые из других предложенных методов, пытаясь немного улучшить, причем наиболее заметным дополнением является использование Stream.collect оператор, используя а joining Collector , подражать чему то String.join делает.

до Java 8, мы могли бы использовать Arrays.toString(array) для печати одномерного массива и Arrays.deepToString(array) для многомерных массивов. У нас есть возможность Stream и lambda в Java 8, который также может быть использован для печати массива.

печать одномерного массива:

печать многомерного массива На всякий случай, если мы хотим напечатать многомерный массив, мы можем использовать Arrays.deepToString(array) как:

теперь нужно заметить, что метод Arrays.stream(T[]) , что в случае int[] возвращает нас Stream а потом метод flatMapToInt() сопоставляет каждый элемент потока с содержимым отображенного потока, полученного путем применения предоставленной функции сопоставления к каждому элемент.

различные способы печати массивов в Java:

используя toString()

печать массива массивов

Выход: [[Ljava.ленг.Строка;@1ad086a [[Ljava.ленг.Строка;@10385c1, [Ljava.ленг.Строка;@42719c] [[пятый, шестой], [седьмой, восьмой]]

через обычный на цикл является самым простым способом печати массива на мой взгляд. Здесь у вас есть пример кода на основе вашего intArray

Читать еще:  Java util logging level

Это дает выход как ваша 1, 2, 3, 4, 5

я наткнулся на этот пост в Ваниль #Java недавно. Это не очень удобно писать!—2—>, затем импортировать java.util.Arrays; все время.

Пожалуйста, обратите внимание, что это не постоянное исправление ни в коем случае. Просто хак, который может сделать отладку проще.

печать массива непосредственно дает внутреннее представление и хэш-код. Теперь все классы Object как родительский тип. Итак, почему бы не взломать Object.toString() ? Без модификация, класс объекта выглядит так:

что делать, если это изменится на:

этот модифицированный класс можно просто добавить в путь к классу, добавив в командную строку следующее: -Xbootclasspath/p:target/classes .

теперь, при наличии deepToString(..) начиная с Java 5, toString(..) можно легко изменить на deepToString(..) чтобы добавить поддержку массивов, содержащих другие массивы.

я обнаружил, что это довольно полезный Хак, и это было бы здорово если бы Java мог просто добавить это. Я понимаю потенциальные проблемы с наличием очень больших массивов, так как строковые представления могут быть проблематичными. Может быть, передать что-то вроде System.out или PrintWriter для таких случайностей.

он всегда должен работать в зависимости от версии JDK, которую вы используете:

это будет работать, если Array содержит объекты. Если Array содержит примитивные типы,вы можете использовать классы-оболочки вместо хранения примитива непосредственно как..

обновление :

да ! это следует отметить, что преобразование массива в массив объектов или использовать массив объекта дорого и может замедлить выполнение. это происходит по природе java под названием autoboxing.

так что только для целей печати, он не должен использоваться. мы можем сделать функцию, которая принимает массив в качестве параметра и выводит нужный формат как

в java 8 это легко. есть два ключевых слова

ссылка на метод: ::println

если вы хотите напечатать все элементы массива в одной строке, то просто используйте print вместо println т. е.

другой способ без ссылки на метод просто использовать:

есть еще один способ, если Ваш массив имеет тип char[]:

Вводный курс. Язык программирования Java

11. Класс Arrays. Работа с массивами

Большая часть методов работы с массивами определена в специальном классе Arrays пакета java.util. Ряд методов определены в классах java.lang.Object и java.lang.System.

На практике наиболее часто в основном используются методы класса java.util.Arrays, а также несколько методов классов java.lang.Object и java.lang.System. Указанные методы представлены ниже.

Методы перегружены для всех примитивных типов

[]b=Arrays.copyOf([]a, int newLength)

[]a – исходный массив

[]b – новый массив

newLength – длина нового массива

[]b=Arrays.copyOfRange ([]a, int index1, int index2)

копирование части массива,

[]a – исходный массив

[]b – новый массив

index1, index2– начальный и конечный индексы копирования

java.lang.System.arraycopy([] a, indexA , []b, indexB, count)

Читать еще:  Unit test javascript

[]a – исходный массив

[]b – новый массив

indexA-начальный индекс копирования исходного массива

indexB-начальный индекс нового массива

count— количество элементов копирования

[]b= a.java.lang.Object.clone()

[]a – исходный массив

[]b – новый массив

Arrays.sort([]a)

Сортировка. Упорядочивание всего массива в порядке возрастания

Arrays.sort([]a,index1,index2)

Сортировка части массива

в порядке возрастания

Arrays.sort([]a, Collections.reverseOrder());

Сортировка. Упорядочивание всего массива в порядке убывания

Boolean f=Arrays.equals([]a,[]b)

String str=Arrays.toString([]a);

Вывод одномерных массивов. Все элементы представлены в виде одной строки

int index=Arrays.binarySearch([]a,элемент a)

поиск элемента методом бинарного поиска

Arrays.fill([]a, элемент заполнения)

заполнение массива переданным значением

Boolean f=Arrays.deepEquals([]a, []b)

сравнение двумерных массивов

List Arrays.asList( []a);

Перевод массива в коллекцию

Для работы с классом необходимо подключить библиотеку java.util.Arrays.

Методы работы с массивами

Копирование массивов

Метод java.util.Arrays.copyOf()

Arrays.copyOf возвращает массив-копию новой длины. Если новая длина меньше исходной, то массив усекается до этой длины, а если больше, то дополняется значениями по умолчанию соответствующего типа.

[]b=Arrays.copyOf([]a, int newLength),

[]a – исходный массив

[]b – новый массив

newLength – длина нового массива

Пример 1.

длина массива a:6
длина массива b: 6
массив a
0.0 1.0 2.0 3.0 4.0 5.0
новая длина массива b: 3
массив b
0.0 1.0 2.0

Пример 2.

массив flag1
true true true
массив flag2
false false false false false
длина массива flag2: 5
массив flag2
true true true false false

Метод java.util. Arrays.copyOf()

Arrays.copyOfRange возвращает массив-копию новой длины, при этом копируется часть оригинального массива от начального индекса до конечного –1.

[]b=Arrays.copyOfRange ([]a, int index1, int index2),

[]a – исходный массив

[]b – новый массив

index1, index2– начальный и конечный индексы копирования

Пример.

Дни недели:
Понедельник Вторник Среда Четверг Пятница Суббота Воскресенье
Рабочие дни
Понедельник Вторник Среда Четверг Пятница

Метод arraycopy() из класса System

Быстродействие метода System.arraycopy() выше по сравнению с использованием цикла for для выполнения копирования. Метод System.arraycopy( ) перегружен для обработки всех типов.

java.lang.System.arraycopy([] a, indexA , []b, indexB, count),

[]a – исходный массив

[]b – новый массив

indexA-начальный индекс копирования исходного массива

indexB-начальный индекс нового массива

count— количество элементов копирования

Пример.

Пример.

Метод clone() из класса Object

[]b= a.java.lang.Object.clone();

[]a – исходный массив

[]b – новый массив

Пример.

Сортировка массивов

Метод Arrays.sort([]a)

Метод sort() из класса Arrays использует усовершенствованный алгоритм Быстрой сортировки (Quicksort), который эффективен для большинства набора данных. Метод упорядочивает весь массив в порядке возрастания значений элементов.

Arrays.sort([]a),

[]a – исходный массив, после работы метода массив будет содержать упорядоченные значения элементов в порядке возрастания.

Пример.

Метод Arrays.sort([]a,index1,index2)

выполняет сортировку части массива по возрастанию массива от index1 до index2 минус единица

Arrays.sort([]a,index1,index2),

[]a – исходный массив

index1, index2 — начальный и конечный индексы, определяющие диапазон упорядочивания элементов по возрастанию.

Читать еще:  Math round javascript

Сортировка массива по убыванию

Arrays.sort([]a, Collections.reverseOrder());

При сортировке массива в обратном порядке (по убыванию) нужно использовать вместо примитивного типа, объектный тип.

15,39 1,54 17,47 15,50 3,83 16,43 18,87 15,54 8,23 12,97

Массив,отсотированный по убыванию

18,87 17,47 16,43 15,54 15,50 15,39 12,97 8,23 3,83 1,54

Сравнение массивов

Чтобы быть равными, массивы должны иметь одинаковый тип и число элементов, а каждый элемент должен быть равен каждому соответствующему элементу другого массива.

Класс Object имеет метод equals , который наследуется массивами и не является перегруженным и сравнение идет по адресам объектов, а не по содержимому. Метод equals перегружен только в классе Arrays . Отсюда вытекает правило сравнения массивов:

  • a == b сравниваются адреса массивов
  • a.equals(b) сравниваются адреса массивов
  • Arrays.equals(a, b) сравнивается содержимое массивов
  • Arrays.deepEquals(a, b) сравнивается содержимое многомерных массивов

Boolean f=Arrays.equals([]a,[]b);

Метод вернет true, если содержимое массивов равно, в противном случае false.

Вывод одномерных массивов

Имеется достаточно удобный метод вывода данных одномерного массива — Arrays.toString([]a, который возвращает строковое представление массива со строковым представлением элементов, заключенных в квадратные скобки.

String str=Arrays.toString([]a);

Это адрес: [Ljava.lang.String;@1db9742

Это значения: [Красный, Синий, Зеленый]

До сортировки: [7, 2, 9, 1, 0, 3, 4, 8, 5, 6]

После сортировки: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Вывод многомерных массивов

Для вывода многомерных массивов метод Arrays.deepToString.

String str= Arrays.deepToString([][]a);

массив a: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

массив ch: [[а, б, в], [г, д, е], [ё, ж, з]]

Бинарный поиск элемента в одномерном массиве

Бинарный поиск – алгоритм поиска элемента в отсортированном массиве. Алгоритм основывается на принципе последовательного деления массива пополам.

int index=Arrays.binarySearch([]a,элемент x),

х — искомое значение

index – индекс элемента в массиве, если поиск успешный,

отрицательное число – если в массиве элемент не найден

Массив должен быть отсортирован! В противном случае результат будет неопределенным.

Массив= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

искомое значение = 5

Массив= [август, апрель, декабрь, июль, июнь, май, март, ноябрь, октябрь, сентябрь, февраль, январь]

искомое значение = март

Заполнение массива

Метод Arrays.fill() позволяет заполнить массив одинаковыми данными.

Имеется два метода

Arrays.fill([]a, value);

Arrays.fill(a[], int index1, int index2, value),

[]a – заполняемый массив,

index1, index2- индексы диапазона заполнения,

До заполнения a: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

До заполнения b: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

До заполнения bool: [false, false, false, false, false, false, false, false, false, false]

После заполнения a: [9, 9, 9, 9, 9, 9, 9, 9, 9, 9]

После заполнения b: [0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 2.0, 2.0, 2.0, 2.0]

После заполнения: bool[true, true, true, true, true, false, false, false, false, false]

Ссылка на основную публикацию
Adblock
detector