Kahden taulukon yhdistäminen Javassa on samanlaista kuin kahden taulukon ketjuttaminen tai yhdistäminen yhdeksi taulukkoobjektiksi. Meidän on yhdistettävä kaksi taulukkoa siten, että taulukon elementit säilyttävät alkuperäisen järjestyksensä juuri yhdistetyssä taulukossa. Ensimmäisen taulukon elementit edeltävät toisen taulukon elementtejä juuri yhdistetyssä taulukossa. Esimerkiksi:
int[] arr1={1, 2, 3, 4, 5, 6}; //first array int[] arr2={7, 8, 9, 0}; //second array int[] arr3={1, 2, 3, 4, 5, 6, 7, 8, 9, 0} //resultant array
Voit yhdistää kaksi taulukkoa seuraavilla tavoilla:
- Java arraycopy() menetelmä
- Käyttämättä arraycopy() menetelmä
- Java Kokoelmat
- Java Striimaa API
Java arraycopy() -menetelmä
Java arraycopy() on menetelmä Järjestelmä luokkaan, joka kuuluu java.lang paketti. Se kopioi taulukon määritetystä lähdetaulukosta kohdetaulukon määritettyyn paikkaan. Kopioitujen elementtien määrä on yhtä suuri kuin pituusargumentti.
Syntaksi:
lihavoitu teksti css
public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length)
Parametrit
Se heittää NullPointerException jos lähde- tai kohdetaulukko on tyhjä. Se myös heittää ArrayIndexOutOfBoundsException if :
Esimerkki arraycopy()-menetelmästä
Seuraavassa esimerkissä olemme luoneet kaksi kokonaislukutaulukkoa firstArray ja secondArray . Kahden taulukon yhdistämiseksi löydämme sen pituuden ja tallennetaan vastaavasti fal- ja sal-muuttujiin. Tämän jälkeen luomme uuden kokonaislukutaulukon tulos joka tallentaa molempien taulukoiden pituuksien summan. Kopioi nyt kummankin taulukon jokainen elementti tulostaulukkoon käyttämällä arraycopy() toiminto.
import java.util.Arrays; public class MergeArrayExample1 { public static void main(String[] args) { int[] firstArray = {23,45,12,78,4,90,1}; //source array int[] secondArray = {77,11,45,88,32,56,3}; //destination array int fal = firstArray.length; //determines length of firstArray int sal = secondArray.length; //determines length of secondArray int[] result = new int[fal + sal]; //resultant array of size first array and second array System.arraycopy(firstArray, 0, result, 0, fal); System.arraycopy(secondArray, 0, result, fal, sal); System.out.println(Arrays.toString(result)); //prints the resultant array } }
Lähtö:
myflixer
[23, 45, 12, 78, 4, 90, 1, 77, 11, 45, 88, 32, 56, 3]
Katsotaanpa toinen esimerkki, jossa olemme määrittäneet soure_array-, määränpää-, kohde-sijainti-, lähteen sijainnin ja pituuden. Voimme yhdistää taulukon määritettyjen paikkojen ja pituuden mukaan.
Esimerkki
import java.lang.*; public class MergeArrayExample2 { public static void main(String[] args) { int firstArray[] = { 11,22,33,44,55,98,76,54,60}; int secondArray[] = {66,77,88,99,22,67,21,90,80,70}; int source_arr[], sourcePos, dest_arr[], destPos, len; source_arr = firstArray; dest_arr = secondArray; sourcePos = 2; destPos = 4; len = 3; // Print elements of source System.out.print('source_array : '); for (int i = 0; i <firstarray.length; i++) system.out.print(firstarray[i] + ' '); system.out.println(''); system.out.println('sourcepos : sourcepos); print elements of destination system.out.print('dest_array for (int i="0;" < secondarray.length; system.out.print(secondarray[i] system.out.println('destpos destpos); system.out.println('len len); invoking arraycopy() method system.arraycopy(source_arr, sourcepos, dest_arr,destpos, after system.out.print('resultant array } pre> <p> <strong>Output:</strong> </p> <pre> source_array: 11 22 33 44 55 98 76 54 60 sourcePos: 2 dest_array: 66 77 88 99 22 67 21 90 80 70 destPos: 4 len: 3 Resultant array: 66 77 88 99 33 44 55 90 80 70 </pre> <h2>Without using arraycopy() method</h2> <p> <strong>Example of merging two arrays</strong> </p> <p>In the following example, we have initialized two arrays firstArray and secondArray of integer type. Manually copy the each element of both arrays to mergedArray and convert that array into String by using toString() method of Array class.</p> <pre> public class MergeArrayExample3 { public static void main(String[] args) { int[] firstArray = {56,78,90,32,67,12}; //initialized array int[] secondArray = {11,14,9,5,2,23,15}; int length = firstArray.length + secondArray.length; //add the length of firstArray into secondArray int[] mergedArray = new int[length]; //resultant array int pos = 0; for (int element : firstArray) //copying elements of secondArray using for-each loop { mergedArray[pos] = element; pos++; //increases position by 1 } for (int element : secondArray) //copying elements of firstArray using for-each loop { mergedArray[pos] = element; pos++; } System.out.println(Arrays.toString(mergedArray)); //prints the resultant array } } </pre> <p> <strong>Output:</strong> </p> <pre> [56, 78, 90, 32, 67, 12, 11, 14, 9, 5, 2, 23, 15] </pre> <h2>Using Collections</h2> <p> <strong>Example of merging two arrays in Java</strong> </p> <p>In the following example, we have initialized two arrays str1 and str2 of String type. After that we have created a list view of str1 by using the Arrays.asList() method. Now we have created the list view of str2 and added all the elements of str2 into the list. Again perform conversion from list to array and store the resultant array into str3 variable.</p> <pre> import java.util.*; public class MergeArrayExample4 { public static void main(String args[]) { String str1[] = { 'A', 'E', 'I' }; //source array String str2[] = { 'O', 'U' }; //destination array List list = new ArrayList(Arrays.asList(str1)); //returns a list view of an array //returns a list view of str2 and adds all elements of str2 into list list.addAll(Arrays.asList(str2)); Object[] str3 = list.toArray(); //converting list to array System.out.println(Arrays.toString(str3)); //prints the resultant array } } </pre> <p> <strong>Output:</strong> </p> <pre> [A, E, I, O, U] </pre> <h2>Java Stream API</h2> <p> <strong>Stream.of() method</strong> </p> <p>The <strong>Stream.of()</strong> method of Stream interface returns a sequential ordered stream whose elements are the values.</p> <p> <strong>Syntax</strong> </p> <pre> static Stream of(T....values) </pre> <p>Where M <strong>T</strong> is the type of stream elements. The method accepts <strong>values</strong> (elements of the new stream).</p> <p> <strong>flatMap() method</strong> </p> <p>The <strong>flatMap()</strong> method is the method of Stream interface. It returns a stream consisting of the result.</p> <p> <strong>Syntax</strong> </p> <pre> Stream flatMap(Function<? Super T, ? extends Stream> mapper) </pre> <p>Where <strong>R</strong> is the element type of new stream. The method accepts a <strong>mapper</strong> (a function to apply to each element which produces a stream of new values) as a parameter.</p> <p> <strong>toArray() method</strong> </p> <p>The <strong>toArray()</strong> method of Stream interface returns an array containing the elements of the stream.</p> <p> <strong>Syntax</strong> </p> <pre> Object[] toArray() </pre> <p> <strong>Example of merging two arrays using Stream API</strong> </p> <pre> import java.util.stream.Stream; import java.util.Arrays; import java.io.*; public class MergeArrayExample5 { // function to merge two arrays public static Object[] mergeArray(T[] arr1, T[] arr2) { return Stream.of(arr1, arr2).flatMap(Stream::of).toArray(); } public static void main (String[] args) { Integer[] firstArray = new Integer[]{13,12,11,6,9,3}; //source array Integer[] secondArray = new Integer[]{78,34,56,67,2,11,7}; //destination array Object[] mergedArray = mergeArray(firstArray,secondArray); //merged array System.out.println('Merged array: '+ Arrays.toString(mergedArray)); } } </pre> <p> <strong>Output:</strong> </p> <pre> Merged array: [13, 12, 11, 6, 9, 3, 78, 34, 56, 67, 2, 11, 7] </pre> <hr></firstarray.length;>
Käyttämättä arraycopy()-menetelmää
Esimerkki kahden taulukon yhdistämisestä
Seuraavassa esimerkissä olemme alustaneet kaksi kokonaislukutyyppistä taulukkoa firstArray ja secondArray. Kopioi kummankin taulukon kukin elementti manuaalisesti mergedArray-tiedostoon ja muunna se Stringiksi käyttämällä Array-luokan toString()-menetelmää.
public class MergeArrayExample3 { public static void main(String[] args) { int[] firstArray = {56,78,90,32,67,12}; //initialized array int[] secondArray = {11,14,9,5,2,23,15}; int length = firstArray.length + secondArray.length; //add the length of firstArray into secondArray int[] mergedArray = new int[length]; //resultant array int pos = 0; for (int element : firstArray) //copying elements of secondArray using for-each loop { mergedArray[pos] = element; pos++; //increases position by 1 } for (int element : secondArray) //copying elements of firstArray using for-each loop { mergedArray[pos] = element; pos++; } System.out.println(Arrays.toString(mergedArray)); //prints the resultant array } }
Lähtö:
[56, 78, 90, 32, 67, 12, 11, 14, 9, 5, 2, 23, 15]
Kokoelmien käyttäminen
Esimerkki kahden taulukon yhdistämisestä Javassa
Seuraavassa esimerkissä olemme alustaneet kaksi String-tyyppistä taulukkoa str1 ja str2. Tämän jälkeen olemme luoneet listanäkymän str1:stä käyttämällä Arrays.asList()-metodia. Nyt olemme luoneet str2:n luettelonäkymän ja lisänneet kaikki str2:n elementit luetteloon. Suorita jälleen muunnos luettelosta taulukkoon ja tallenna tuloksena oleva taulukko str3-muuttujaan.
java-merkkijonojen muotoilu
import java.util.*; public class MergeArrayExample4 { public static void main(String args[]) { String str1[] = { 'A', 'E', 'I' }; //source array String str2[] = { 'O', 'U' }; //destination array List list = new ArrayList(Arrays.asList(str1)); //returns a list view of an array //returns a list view of str2 and adds all elements of str2 into list list.addAll(Arrays.asList(str2)); Object[] str3 = list.toArray(); //converting list to array System.out.println(Arrays.toString(str3)); //prints the resultant array } }
Lähtö:
[A, E, I, O, U]
Java Stream API
Stream.of()-menetelmä
The Stream.of() Stream interface -menetelmä palauttaa järjestetyn virran, jonka elementit ovat arvoja.
Syntaksi
static Stream of(T....values)
Missä M T on stream-elementtien tyyppi. Menetelmä hyväksyy arvot (uuden streamin elementit).
verkkokerros tietokoneverkoissa
flatMap() -menetelmä
The flatMap() menetelmä on Stream-rajapinnan menetelmä. Se palauttaa tuloksesta koostuvan virran.
Syntaksi
Stream flatMap(Function<? Super T, ? extends Stream> mapper)
Missä R on uuden virran elementtityyppi. Menetelmä hyväksyy a kartoittaja (funktio, jota sovelletaan jokaiseen elementtiin, joka tuottaa virran uusia arvoja) parametrina.
toArray() -menetelmä
The toArray() Stream interface -menetelmä palauttaa taulukon, joka sisältää virran elementit.
Syntaksi
Object[] toArray()
Esimerkki kahden taulukon yhdistämisestä Stream API:lla
Android-versiohistoria
import java.util.stream.Stream; import java.util.Arrays; import java.io.*; public class MergeArrayExample5 { // function to merge two arrays public static Object[] mergeArray(T[] arr1, T[] arr2) { return Stream.of(arr1, arr2).flatMap(Stream::of).toArray(); } public static void main (String[] args) { Integer[] firstArray = new Integer[]{13,12,11,6,9,3}; //source array Integer[] secondArray = new Integer[]{78,34,56,67,2,11,7}; //destination array Object[] mergedArray = mergeArray(firstArray,secondArray); //merged array System.out.println('Merged array: '+ Arrays.toString(mergedArray)); } }
Lähtö:
Merged array: [13, 12, 11, 6, 9, 3, 78, 34, 56, 67, 2, 11, 7]