如何对数组进行排序和搜索里面的元素?
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.xyc.arraysInstance; import java.util.Arrays; /** * * @ClassName: MainClass * @Description:如何对数组进行排序和搜索里面的元素? * @author: xyc * @date: 2017年2月10日 下午12:57:54 * */ public class MainClass { public static void main(String args[]) throws Exception { int array[] = { 2, 5, -2, 6, -3, 8, 0, -7, -9, 4 }; Arrays.sort(array); printArray("Sorted array", array); //binarySearch方法搜索指定的数组 使用二进制搜索算法来指定值。该数组必须在进行此调用之前进行排序。如果不排序,则结果是不确定的。 //此方法返回搜索键的索引,如果它包含在数组中,否则它返回(- (插入点)- 1)。 //如果可以查找到该指定值,则返回该指定值在数组中的索引 //如果没找到该指定值,则将返回该指定值在 数组插入点(排序插入合适的位置)的负位置减1(- (插入点)- 1) int index = Arrays.binarySearch(array, 0); System.out.println("Found 2 @ " + index); } private static void printArray(String message, int array[]) { System.out.println(message + ": [length: " + array.length + "]"); for (int i = 0; i < array.length; i++) { if(i != 0){ System.out.print(", "); } System.out.print(array[i]); } System.out.println(); } }
上面的代码示例将产生以下结果:
Sorted array: [length: 10]
-9, -7, -3, -2, 0, 2, 4, 5, 6, 8
Found 2 @ 4
如何排序数组,并插入元素到数组中?
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.xyc.arraysInstance; import java.util.Arrays; /** * * @ClassName: InsertArray * @Description:如何排序数组,并插入元素到数组中? * @author: xyc * @date: 2017年2月10日 下午1:44:23 * */ public class InsertArray { public static void main(String args[]) throws Exception { int array[] = { 2, 5, -2, 6, -3, 8, 0, -7, -9, 4 }; //排序数组 Arrays.sort(array); printArray("Sorted array", array); //二分法查找数组 int index = Arrays.binarySearch(array, 1); System.out.println("Didn't find 1 @ " + index); int newIndex = -index - 1; array = insertElement(array, 1, newIndex); printArray("With 1 added", array); } /** * * @Title: printArray * @Description: 按照指定方式打印数组 * @param: @param message * @param: @param array * @return: void * @throws */ private static void printArray(String message, int array[]) { System.out.println(message + ": [length: " + array.length + "]"); for (int i = 0; i < array.length; i++) { if (i != 0) { System.out.print(", "); } System.out.print(array[i]); } System.out.println(); } //array 1 5 private static int[] insertElement(int original[], int element, int index) { int length = original.length; int destination[] = new int[length + 1];//11 //System.arraycopy(src, srcPos, dest, destPos, length); //src:源数组; //srcPos:源数组要复制的起始位置; //dest:目的数组; //destPos:目的数组放置的起始位置; //length:复制的长度。 System.arraycopy(original, 0, destination, 0, index); //destination [-9,-7,-3,-2,0,0,0,0,0,0,0] destination[index] = element; System.arraycopy(original, index, destination, index + 1, length - index); return destination; } }
上面的代码示例将产生以下结果:
Sorted array: [length: 10]
-9, -7, -3, -2, 0, 2, 4, 5, 6, 8
Didn't find 1 @ -6
With 1 added: [length: 11]
-9, -7, -3, -2, 0, 1, 2, 4, 5, 6, 8
如何确定一个二维数组的上限或长度?
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.xyc.arraysInstance; /** * * @ClassName: Main * @Description:如何确定一个二维数组的上限或长度? * @author: xyc * @date: 2017年2月10日 下午2:06:56 * */ public class ArrayLength { public static void main(String args[]) { String[][] data = new String[2][5]; //一维数组长度 System.out.println("Dimension 1: " + data.length); //二维长度 System.out.println("Dimension 2: " + data[0].length); } }
上面的代码示例将产生以下结果:
Dimension 1: 2
Dimension 2: 5
如何逆转数组列表?
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.xyc.arraysInstance; import java.util.ArrayList; import java.util.Collections; /** * * @ClassName: ReverseArray * @Description:如何逆转数组列表? * @author: xyc * @date: 2017年2月10日 下午2:12:22 * */ public class ReverseArray { public static void main(String[] args) { ArrayList arrayList = new ArrayList(); arrayList.add("A"); arrayList.add("B"); arrayList.add("C"); arrayList.add("D"); arrayList.add("E"); System.out.println("Before Reverse Order: " + arrayList); //使用reverse方法可以根据元素的自然顺序 对指定列表按降序进行排序。 Collections.reverse(arrayList); System.out.println("After Reverse Order: " + arrayList); } }
上面的代码示例将产生以下结果:
Before Reverse Order: [A, B, C, D, E]
After Reverse Order: [E, D, C, B, A]
如何遍历数组
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.xyc.arraysInstance; /** * * @ClassName: Welcome * @Description:如何遍历数组 * @author: xyc * @date: 2017年2月10日 下午2:14:02 * */ public class ErgodicArray { public static void main(String[] args){ String[] greeting = new String[3]; greeting[0] = "This is the greeting"; greeting[1] = "for all the readers from"; greeting[2] = "Java Source ."; //for 循环遍历 for (int i = 0; i < greeting.length; i++){ System.out.println(greeting[i]); } //foreach 遍历 ,不能通过指定索引获取指定数组元素 for (String string : greeting) { System.out.println(string); } } }
This is the greeting
for all the readers from
Java Source .
This is the greeting
for all the readers from
Java Source .
如何搜索数组中最小和最大元素?
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.xyc.arraysInstance; import java.util.Arrays; import java.util.Collections; /** * * @ClassName: Main * @Description:如何搜索数组中最小和最大元素? * @author: xyc * @date: 2017年2月10日 下午2:21:15 * */ public class GetArrayMaxAndMin { public static void main(String[] args) { Integer[] numbers = { 8, 2, 7, 1, 4, 9, 5}; //先将数据转为集合,之后通过集合方法获取最大最小值 int min = (int) Collections.min(Arrays.asList(numbers)); int max = (int) Collections.max(Arrays.asList(numbers)); System.out.println("Min number: " + min); System.out.println("Max number: " + max); } }
上面的代码示例将产生以下结果:
Min number: 1
Max number: 9
如何合并两个数组?
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.xyc.arraysInstance; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * * @ClassName: MergeArray * @Description:如何合并两个数组? * @author: xyc * @date: 2017年2月10日 下午2:26:29 * */ public class MergeArray { public static void main(String args[]) { String a[] = { "A", "E", "I" }; String b[] = { "O", "U" }; //合并数组,将数据转换为集合之后通过合并集合来完成,最后再将合并后的集合转为数组 List list = new ArrayList(Arrays.asList(a)); list.addAll(Arrays.asList(b)); Object[] c = list.toArray(); System.out.println(Arrays.toString(c)); } }
上面的代码示例将产生以下结果:
[A, E, I, O, U]
如何填充(初始化)数组?
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.xyc.arraysInstance; import java.util.*; /** * * @ClassName: FillTest * @Description:如何填充(初始化)数组? * @author: xyc * @date: 2017年2月10日 下午2:29:20 * */ public class FillTest { public static void main(String args[]) { int array[] = new int[6]; //java.util.Arrays.fill(int[] a, int val) 分配方法指定的int值给指定的int型数组的每个元素。 //a -- 这是要填充的数组。 //val -- 这是要被存储在该数组中的所有元素的值。 Arrays.fill(array, 100); for (int i=0, n=array.length; i < n; i++) { System.out.println(array[i]); } System.out.println(); //java.util.Arrays.fill(int[] a, int fromIndex, int toIndex, int val) //a -- 这是要填充的数组 //fromIndex -- 这是第一个元素(包括)到填充有指定的值的索引 //toIndex -- 这是最后一个元素(不含)以填充指定值的索引 //val -- 这是要被存储在该数组中的所有元素的值 //3~6 个索引处被50填充 Arrays.fill(array, 3, 6, 50); for (int i=0, n=array.length; i< n; i++) { System.out.println(array[i]); } } }
上面的代码示例将产生以下结果:
100
100
100
100
100
100
100
100
100
50
50
50
如何初始化后延长一个数组?
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.xyc.arraysInstance; /** * * @ClassName: Main * @Description:如何初始化后延长一个数组? * @author: xyc * @date: 2017年2月10日 下午2:41:31 * */ public class ExtendArray { public static void main(String[] args) { String[] names = new String[] { "A", "B", "C" }; String[] extended = new String[5]; extended[3] = "D"; extended[4] = "E"; System.arraycopy(names, 0, extended, 0, names.length); for (String str : extended){ System.out.println(str); } } }
上面的代码示例将产生以下结果:
A
B
C
D
E
如何删除数组中的一个元素?
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.xyc.arraysInstance; import java.util.ArrayList; /** * * @ClassName: Main * @Description:如何删除数组中的一个元素? * @author: xyc * @date: 2017年2月10日 下午2:47:54 * */ public class Main { public static void main(String[] args) { ArrayList objArray = new ArrayList(); objArray.clear(); //java.util.ArrayList.add(int index, E elemen) 方法将指定的元素E在此列表中的指定位置 //index -- 在该指定的索引的元素将被插入。 //element -- 要插入的元素。 objArray.add(0,"0th element"); objArray.add(1,"1st element"); objArray.add(2,"2nd element"); System.out.println("Array before removing an element"+objArray); objArray.remove(1); objArray.remove("0th element"); System.out.println("Array after removing an element"+objArray); } }
上面的代码示例将产生以下结果:
Array before removing an element[0th element, 1st element, 2nd element]
Array after removing an element[2nd element]
如何从一个数组中删除另一个数组?
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.xyc.arraysInstance; import java.util.ArrayList; /** * * @ClassName: RemoveArray * @Description:如何从一个数组中删除另一个数组? * @author: xyc * @date: 2017年2月10日 下午2:59:41 * */ public class RemoveArray { public static void main(String[] args) { ArrayList objArray = new ArrayList(); ArrayList objArray2 = new ArrayList(); objArray2.add(0,"common1"); objArray2.add(1,"common2"); objArray2.add(2,"notcommon"); objArray2.add(3,"notcommon1"); objArray.add(0,"common1"); objArray.add(1,"common2"); objArray.add(2,"notcommon2"); System.out.println("Array elements of array1" +objArray); System.out.println("Array elements of array2" +objArray2); //从objArray列表中移除指定objArray2中包含的其所有元素 objArray.removeAll(objArray2); System.out.println("Array1 after removing array2 from array1"+objArray); } }
上面的代码示例将产生以下结果:
Array elements of array1[common1, common2, notcommon2]
Array elements of array2[common1, common2, notcommon, notcommon1]
Array1 after removing array2 from array1[notcommon2]
如何查找从数组中的公共元素?
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.xyc.arraysInstance; import java.util.ArrayList; /** * * @ClassName: ArrayPubllicElement * @Description:如何查找从数组中的公共元素? * @author: xyc * @date: 2017年2月10日 下午3:05:34 * */ public class ArrayPubllicElement { public static void main(String[] args) { ArrayList objArray = new ArrayList(); ArrayList objArray2 = new ArrayList(); objArray2.add(0,"common1"); objArray2.add(1,"common2"); objArray2.add(2,"notcommon"); objArray2.add(3,"notcommon1"); objArray.add(0,"common1"); objArray.add(1,"common2"); objArray.add(2,"notcommon2"); System.out.println("Array elements of array1"+objArray); System.out.println("Array elements of array2"+objArray2); objArray.retainAll(objArray2); System.out.println("Array1 after retaining common elements of array2 & array1"+objArray); } }
上面的代码示例将产生以下结果:
Array elements of array1[common1, common2, notcommon2]
Array elements of array2[common1, common2, notcommon, notcommon1]
Array1 after retaining common elements of array2 & array1[common1, common2]
如何在Array查找一个对象或一个字符串?
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.xyc.arraysInstance; import java.util.ArrayList; /** * * @ClassName: Main * @Description:如何在Array查找一个对象或一个字符串? * @author: xyc * @date: 2017年2月10日 下午3:06:58 * */ public class ArrayGetObjectOrString { public static void main(String[] args) { ArrayList objArray = new ArrayList(); ArrayList objArray2 = new ArrayList(); objArray2.add(0,"common1"); objArray2.add(1,"common2"); objArray2.add(2,"notcommon"); objArray2.add(3,"notcommon1"); objArray.add(0,"common1"); objArray.add(1,"common2"); System.out.println("Array elements of array1"+objArray); System.out.println("Array elements of array2"+objArray2); //objArray集合数组里面是否存在common1元素 System.out.println("Array 1 contains String common2?? "+objArray.contains("common1")); //objArray2 是否包含数组 objArray System.out.println("Array 2 contains Array1?? "+objArray2.contains(objArray) ); } }
上面的代码示例将产生以下结果:
Array elements of array1[common1, common2]
Array elements of array2[common1, common2, notcommon, notcommon1]
Array 1 contains String common2?? true
Array 2 contains Array1?? false
如何检查两个数组是否相等?
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
package com.xyc.arraysInstance; import java.util.Arrays; /** * * @ClassName: ArrayIsEq * @Description:如何检查两个数组是否相等? * @author: xyc * @date: 2017年2月10日 下午3:15:56 * */ public class ArrayIsEq { public static void main(String[] args) throws Exception { int[] ary = {1,2,3,4,5,6}; int[] ary1 = {1,2,3,4,5,6}; int[] ary2 = {1,2,3,4}; System.out.println("Is array 1 equal to array 2?? "+Arrays.equals(ary, ary1)); System.out.println("Is array 1 equal to array 3?? "+Arrays.equals(ary, ary2)); } }
上面的代码示例将产生以下结果:
Is array 1 equal to array 2?? true
Is array 1 equal to array 3?? false