package com.levelup.java.array; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.stream.Stream; import org.apache.commons.lang3.ArrayUtils; import org.junit.Test; import com.google.common.collect.ObjectArrays; import com.google.common.primitives.Ints; /** * This java example will demonstrate combining or joining two arrays. * * @author Justin Musgrove * @see <a * href='http://www.leveluplunch.com/java/examples/join-two-arrays/'>Join * two arrays</a> * */ public class CombineTwoArrays { String[] firstHalfStateCapital = { "Montgomery", "Juneau", "Phoenix", "Little Rock", "Sacramento", "Denver", "Hartford", "Dover", "Tallahassee", "Atlanta", "Honolulu", "Boise", "Springfield", "Indianapolis", "Des Moines", "Topeka", "Frankfort", "Baton Rouge", "Augusta", "Annapolis", "Boston", "Lansing", "Saint Paul", "Jackson", "Jefferson City" }; String[] secondHalfStateCapital = { "Helena", "Lincoln", "Carson City", "Concord", "Trenton", "Santa Fe", "Albany", "Raleigh", "Bismarck", "Columbus", "Oklahoma City", "Salem", "Harrisburg", "Providence", "Columbia", "Pierre", "Nashville", "Austin", "Salt Lake City", "Montpelier", "Richmond", "Olympia", "Charleston", "Madison", "Cheyenne" }; int[] firstHalfStateCapitalByIndex = { 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 }; int[] secondHalfStateCapitalByIndex = { 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 }; @Test public void join_two_object_arrays_in_java() { String[] allStateCapitals = new String[firstHalfStateCapital.length + secondHalfStateCapital.length]; // copy first half System.arraycopy(firstHalfStateCapital, 0, allStateCapitals, 0, firstHalfStateCapital.length); // copy second half System.arraycopy(secondHalfStateCapital, 0, allStateCapitals, firstHalfStateCapital.length, secondHalfStateCapital.length); assertTrue(allStateCapitals.length == 50); } @Test public void join_two_object_arrays_in_java8() { Stream<String> sa = Arrays.stream(firstHalfStateCapital); Stream<String> sb = Arrays.stream(secondHalfStateCapital); String[] allStateCapitals = Stream.concat(sa, sb).toArray( size -> new String[size]); assertTrue(allStateCapitals.length == 50); } @Test public void join_two_object_arrays_in_java_with_guava() { String[] allStateCapitals = ObjectArrays.concat(firstHalfStateCapital, secondHalfStateCapital, String.class); assertTrue(allStateCapitals.length == 50); } @Test public void join_two_primitive_arrays_in_java_with_guava() { int[] allStateCapitalsByIndex = Ints.concat( firstHalfStateCapitalByIndex, secondHalfStateCapitalByIndex); Arrays.toString(allStateCapitalsByIndex); assertEquals(50, allStateCapitalsByIndex.length); } @Test public void join_two_object_arrays_in_java_with_apache_commons() { String[] allStateCapitals = ArrayUtils.addAll(firstHalfStateCapital, secondHalfStateCapital); assertEquals(50, allStateCapitals.length); } @Test public void join_two_primitive_arrays_in_java_with_apache_commons() { int[] allStateCapitalsByIndex = ArrayUtils.addAll( firstHalfStateCapitalByIndex, secondHalfStateCapitalByIndex); assertEquals(50, allStateCapitalsByIndex.length); } }