Giriş
Şu satırı dahil ederiz.
asList metodu
Arrays.asList metodu yazısına taşıdım
Şu satırı dahil ederiz.
import java.util.Arrays;
Java'da Array sınıfını genişletmek mümkün olmadığı için bu tür tamamen static metodlardan oluşan utility sınıfları ortaya çıkmıştır. Benzer mantık Array, Files, Objects gibi utility sınıflarında da görülebilir.asList metodu
Arrays.asList metodu yazısına taşıdım
Collections.binarySearch ile aynıdır. Metodun imzası şöyle
Arrays.
binarySearch(Object[] array, Object key)
copyOf metodu - original + lengthcopyOf() metodu ile orijinal dizinin kopyası veya daha büyük bir dizi veya daha küçük bir dizi döndürülebilir. Yeni dizinin uzunluğu eskisinden fazla ise 0 ile doldurur. Kısa ise kırpar.
Örnek
Kopya döndürmek için şöyle yaparız.
int[] a = new int[4];
...
int[] b =
Arrays.copyOf (a, a.length);
Örnekİki diziyi birleştirmek için şöyle yaparız. arraycopy parametreleri src + srcPosition + dest+ destPositon + length
static float[] concat (float[] first, float[] second) {
float[] both = Arrays.copyOf(first, first.length+second.length);
System.arraycopy(second, 0, both, first.length, second.length);
return both;
}
ÖrnekElimizde şöyle bir kod olsun.
int size = ...;
float[] array = ...;
İki diziyi birleştirmek için şöyle yaparız.FloatArray combine(FloatArray other) {
float[] resultArray = new float[array.length + other.array.length];
System.arraycopy(this.array, 0, resultArray, 0, size);
System.arraycopy(other.array, 0, resultArray, size, other.size);
this.array = resultArray;
this.size += other.size;
return this;
}
ÖrnekElimizde şöyle bir kod olsun.
int size = ...;
float[] array = ...;
Dizinin uzunluğunu artırmak için şöyle yaparız.void add(float f) {
if (size == array.length) {
array = Arrays.copyOf(array, array.length * 2);
}
array[size++] = f;
}
copyOf metodu - original + length + new typeArray içindeki nesneleri başka bir array'e tipini değiştirerek kopyalar.
Object[] a = Arrays.copyOf (new String[] { "hello", "world" }, 3, Object[].class);
Metodun içi şöyledir.static <T,U> T[] copyOf(U[] original,int newLength, Class<? extends T[]> newType){
T[] copy = ((Object)newType == (Object)Object[].class)
? (T[]) new Object[newLength]
: (T[]) Array.newInstance(newType.getComponentType(), newLength);
System.arraycopy(original, 0, copy, 0,
Math.min(original.length, newLength));
return copy;
}
copyOfRange metodu
Örnek
Şöyle yaparız
private static int[] copyArray1(){
int[] numbers = {1,2,3,4,5,6,7};
int[] subArray = Arrays.copyOfRange(numbers,3,numbers.length);
System.out.println(Arrays.toString(subArray));
return subArray;
}
Aynı şeyi Stream kullanarak şöyle yaparız
int[] numbers = {1,2,3,4,5,6,7};
int[] subArray = IntStream
.range(0, numbers.length)
.filter(i -> i > 3)
.map(a->numbers[a]).toArray();
System.out.println(Arrays.toString(subArray));
deepEquals metodu
int[][] workingPuzzle = ...; int[][] solvedPuzzle = ...;
boolean result = Arrays.deepEquals (workingPuzzle, solvedPuzzle);
Objects.deepEquals allta bu metodu kullanır.public static boolean deepEquals(Object a, Object b) {
if (a == b)
return true;
else if (a == null || b == null)
return false;
else
return Arrays.deepEquals0(a, b);
}
deepHashCode metodu
Açıklaması şöyle. Çok boyutlu veya Object içeren diziler için kullanılır
Arrays.hashCode():This method is used to compute a hash code for a one-dimensional array. It considers the content of the array elements while calculating the hash code. In other words, it uses the elements' values to determine the hash code.Arrays.deepHashCode():This method is used to compute a hash code for a multi-dimensional array (array of arrays) or an array containing nested objects. It not only considers the content of the top-level array but also recursively calculates hash codes for the nested arrays or objects within the array.
deepToString metodu
Örnek
Şöyle yaparız.
String[][] users = ...;
System.out.println(Arrays.deepToString (users));
ÖrnekŞöyle yaparız.
int[][] arr = new int[4][3];
...
System.out.println("Array: " + Arrays.toString(array));
fill metoduŞöyle yaparız.
String[] names= new String[5];
Arrays.fill(names,"");
mismatch metodu
Açıklaması şöyle
Returns the index of the first non-matching element in 2 arrays (Java 9).
parallelPrefix metodu yazısına taşıdım
parallelSetAll metodu
Bir dizinin elemanlarına paralel olarak değer atar. Örnek ver
parallelSort metodu
Metodun imzası şöyle. İlk parametre sıralanacak dizi, ikinci parametre ise sıralama için kullanılacak karşılaştırma işlemini belirtir.
static <T> void parallelSort(T[] a, Comparator<? super T> cmp)
)Açıklaması şöyle.
- it uses the ForkJoinPool.commonPool() and will fight with other functions that use it by default (e.g. parallel() on a stream)Örnek
- the thread-pool Arrays.parallelSort uses is not configurable (only on a global level by increasing the common-pools thread amount)
- it performs worse on small data sets (more often than not arrays contain little elements, the JDK even acknowledges that e.g. most ArrayList stay empty for their whole lifetime which saves quite a bit of memory and CPU time for not instantiating arrays that will never be filled)
Şöyle yaparız.
Integer[] one = {2,5,8,1,3,4,9};
Arrays.parallelSort(one, (p1, p2) -> p2 - p1);
setAll metoduİmzası şöyle.
<T> void Arrays.setAll(T[] array, IntFunction<T> generator)
ÖrnekŞöyle yaparız.
int[] arr = new int[10];
Arrays.setAll(arr, i -> i*2);
// array is filled with [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] now
sort metoduŞöyle yaparız.
int arr[] = ...
Arrays.sort(arr);
Eğer kendi Comparator nesnemizi sağlamak istersek şöyle yaparız.Arrays.sort(arr, new Comparator<String>() {
public int compare(String s1, String s2) {
...
}
});
stream metoduJava 8 ile gelen stream() metodu şöyle çalışıyor.
int[] array = {3, 2, 5, 4};
if (Arrays.stream(array).anyMatch(x -> x == 3)) {
System.out.println("The array contains 3");
}
toStringElimizde şöyle bir array olsun.
final static int SIZE = 15;
int[] arrayOfInts = new int[SIZE];
Bu array'i yazdırırsakSystem.out.println(arrayOfInts);
Şöyle bir çıktı alırız.[I@15db9742
ÖrnekEğer içindekileri yazdırmak istiyorsak şöyle yaparız.
System.out.println(Arrays.toString(arrayOfInts));
ÖrnekElimizde şöyle bir dizi olsun
Integer[] secondArray = {2,3,4,5,6,11,12,123};
System.out.println("values:" + Arrays.toString(secondArray));
Çıktı olarak şunu alırız.2, 3, 4, 5, 6, 11, 12, 123
Dolayısıyla bazı kodlardaki şu gibi metodlara aslında ihtiyaç yok.
private static void printArray(int[] anArray) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < anArray.length; i++) {
if (i > 0) {
sb.append(", ");
}
sb.append(anArray[i]);
}
System.out.println(sb.toString());
}
Hiç yorum yok:
Yorum Gönder