Lecture slides for week 19
Download
Report
Transcript Lecture slides for week 19
Java.util.Arrays class
java.lang.System class
java.util.Arrays class
The class java.lang.System contains a method
arraycopy that copies array efficiently.
int array1[] = new int[10];
int array2[] = new int[10];
//copy array1 into array2
System.arraycopy(array1, 0, array2, 0, 10);
//copy last 5 elements in array1 into first 5 of array2
System.arraycopy(array1, 5, array2, 0, 5);
arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
class CopyArray{
public static void main(String [] args){
int [] array1 = {1,2,3,4,5,6,7,8,9,10};
int [] array2 = new int[10];
//copy array1 into array2
System.arraycopy(array1, 0, array2, 0, 10);
for(int i = 0; i<10; i++)
System.out.println(array2[i]);
}
}
Output
1
2
3
4
5
6
7
8
9
10
class CopyArray{
public static void main(String [] args){
int [] array1 = {1,2,3,4,5,6,7,8,9,10};
int [] array2 = new int[10];
//copy array1 into array2
System.arraycopy(array1, 0, array2, 0, 10);
//copy last 5 elements in array1 into first 5 of array2
System.arraycopy(array1, 5, array2, 0, 5);
for(int i = 0; i<10; i++)
System.out.println(array2[i]);
}
}
Output
6
7
8
9
10
6
7
8
9
10
java.util.Arrays class contain lots of useful
methods to deal manipulate and searching for
searching for data in an array.
i.e. sorting array of integers into ascending order
int myArray[] = {5, 4, 3, 2, 1};
java.util.Arrays.sort(myArray);
//myArray now holds 1, 2, 3, 4, 5
import java.util.*;
class sort{
public static void main(String [] args){
int [] array1 = {10, 5, 6, 1, 3};
// this will sort array1 in ascending order
Arrays.sort(array1);
for(int i = 0; i<5; i++)
System.out.println(array1[i]);
}
}
Output
1
3
5
6
10
import java.util.*;
class sort{
public static void main(String [] args){
String [] array1 = {"ba", "ad", "acd", "efg", "eag"};
// this will sort array1 in ascending order
Arrays.sort(array1);
for(int i = 0; i<5; i++)
System.out.println(array1[i]);
}
}
Output
acd
ad
ba
eag
efg
int myArray[] = new int[5];
java.util.Arrays.fill(myArray, 10);
//myArray now holds 10, 10, 10, 10, 10
java.util.Arrays.fill(myArray, 1,3, 20);
//myArray now holds 10, 20, 20, 10, 10
import java.util.*;
class CopyArray{
public static void main(String [] args){
int [] array1 = new int[5]
//fill array1 the value 10
Arrays.fill(array1, 10);
for(int i = 0; i<5; i++)
System.out.println(array1[i]);
}
}
Output
10
10
10
10
10
import java.util.*;
class CopyArray{
public static void main(String [] args){
int [] array1 = new int[5]
//fill array1 the value 10
Arrays.fill(array1, 10);
//fill array1 from the position the indetx 1 to 2(3-1) with the value 10
Arrays.fill(array1, 1, 3, 20);
for(int i = 0; i<5; i++)
System.out.println(array1[i]);
}
}
Output
10
20
20
10
10
int myArray[] = {1,2,3,4,5,6,7,8,9,10}
java.util.Arrays.binarysearch(myArray, 10);
//myArray now holds 10, 10, 10, 10, 10
import java.util.*;
class binarysearch{
public static void main(String [] args){
int [] array1 = {10, 5, 6, 1, 3};
// this will sort array1 in ascending order
Arrays.sort(array1);
// prints 0 position of the 1st occurrence of 1
System.out.println(Arrays.binarySearch(array1,1));
//prints 1 position of the 1st occurrence of 3
System.out.println(Arrays.binarySearch(array1,3));
// 20 does not exists (prints a negative number)
System.out.println(Arrays.binarySearch(array1,20));
}
}
Import java.util.*;
class binarysearch{
public static void main(String [] args){
int [] array1 = {10, 5, 6, 1, 3};
// this will sort array1 in ascending order
Arrays.sort(array1);
// prints 4 position of the 1st occurrence of 10
System.out.println(Arrays.binarySearch(array1,0,5,10));
//searching from position 1 to 3 positions
System.out.println(Arrays.binarySearch(array1,1,4,10));
}
}
Output
4
-4
import java.util.*;
class binarysearchString{
public static void main(String [] args){
String [] array1 = {“ba”, “ab”, “aa”, “def”, “daf”};
// this will sort array1 in ascending order
Arrays.sort(array1);
// prints 0 position of the 1st occurrence of “aa”
System.out.println(Arrays.binarySearch(array1,”aa”));
//prints 1 position of the 1st occurrence of “ab”
System.out.println(Arrays.binarySearch(array1,”ab”));
// “Golsmiths” not in array1 (prints a negative number)
System.out.println(Arrays.binarySearch(array1, “Goldmisths”));
}
}
A number of useful methods to manipulate
arrays are defined in this class.
For more information see the following link:
http://docs.oracle.com/javase/6/docs/api/java
/util/Arrays.html
Advantages
Very efficient, quick to access and add to
Type-safe, can only add items that match the declared
type of the array
Disadvantages
Fixed size, some overhead in copying/resizing
Can’t tell how many items in the array, just how large it
was declared to be
Limited functionality, need more general functionality
Write a program that stores the value 20 into
all elements of an array is integers.
Write a program that copies the first 5
element of an array of integer of length 10
into the last 5 element of another array of the
same length.
Write a code that takes two arrays of integers
of the same length and swaps their entire
contents.
Write a code that checks if two arrays of
integers of the same length are the same.
Write a code that sorts an array of integer in
ascending order.
Write a code that sorts an array of strings in
ascending order.
Write a code that checks if an integer is
contained in array of integers.
Write a code that checks if a string is
contained in array of strings.
Given the following declaration
String[] cities = {"Washington", "London", "Paris", "New York"};
Write a program that uses a binary search to
search for a particular city is contained in the
array cities.
import java.util.*;
public class CityBinarySearch {
public static void main(String [] args) {
String[] cities = new String[]{"Washington", "London", "Paris", "New York"};
//sorting array in java
Arrays.sort(cities);
//searching on sorted array in java using Arrays binarySearch() method
if(Arrays.binarySearch(cities, "Paris") >=0 ){
System.out.println("Element found on sorted String "+
"array using binary search");
}
}
}
Write a code that takes an array of integers and prints out
the minimum 'gap' between adjacent values in the array. The
gap between two adjacent values in a array is defined as the
second value minus the first value. If the length of the array
is less 2, the program prints out 0.
Example of useful methods defined in
▪ java.util.Arrays class
Practise exercise