【Java数组】
1. 用sort()方法对Java数组进行排序,及如何使用 binarySearch() 方法来查找数组中的元素
binarySearch()
返回值:
如果它包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)
插入点被定义为将键插入数组的那一点:即第一 个大于此键的元素索引,如果数组中的所有元素都小于指定的键,则为 a.length。注意,这保证了当且仅当此键被找到时,返回的值将 >= 0。
否则返回 (-(插入点) - 1)这句话要注意:要是查询的的值小于数组里面的最小值那么结果(-(0)-1结果就是-1),如果查询的 值大于数组里面的最大值。那么结果就是(-(它的索引值)-1结果就是-(1+索引值))
2. 使用sort()方法对Java数组进行排序,及如何使用 insertElement () 方法向数组插入元素
// insertElement () 向数组插入元素,自定义方法
System.arraycopy()
System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。
其函数原型是: public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src:源数组; srcPos:源数组要复制的起始位置; dest:目的数组; destPos:目的数组放置的起始位置; length:复制的长度。
注意:src and dest都必须是同类型或者可以进行转换类型的数组。
有 趣的是这个函数可以实现自己到自己复制,比如: int[] fun ={0,1,2,3,4,5,6}; System.arraycopy(fun,0,fun,3,3); 则结果为:{0,1,2,0,1,2,6}; 实现过程是这样的,先生成一个长度为length的临时数组,将fun数组中srcPos 到srcPos+length-1之间的数据拷贝到临时数组中,再执行System.arraycopy(临时数组,0,fun,3,3).
3. 使用数组的属性 length 来获取数组的长度
4. Collections.reverse(ArrayList) 将数组进行反转
5. 通过循环输出数组:
/* author by w3cschool.cc 文件名:Main.java */ public class Welcome { 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 (int i = 0; i < greeting.length; i++){ System.out.println(greeting[i]); } } }
6. 通过 Collection 类的 Collection.max() 和 Collection.min() 方法来查找数组中的最大和最小值
/* author by w3cschool.cc 文件名:Main.java */ import java.util.Arrays; import java.util.Collections; public class Main { 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); System.out.println("最大值: " + max); } }
说明:
asList方法:当使用asList()方法时,数组就和列表链接在一起了。当更新其中之一时,另一个将自动获得更新。注意:仅仅针对对象数组类型,基本数据类型数组不具备该特性 。
Link:http://blog.csdn.net/cntanghai/article/details/7188296
7. 通过 List 类的 Arrays.toString () 方法和 List 类的 list.Addall(array1.asList(array2) 方法将两个数组合并为一个数组:
/* author by w3cschool.cc 文件名:Main.java */ import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Main { 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)); } }
8. Array.fill(arrayname,value) 方法和 Array.fill(arrayname ,starting index ,ending index ,value) 方法向数组中填充元素
9. 数组扩容
public class Main { 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); } } }
10. 用 sort () 和 binarySearch () 方法来对数组进行排序及查找数组中的元素
11. remove () 方法来删除数组元素
12. removeAll () 方法来计算两个数组的差集
13. removeAll () 方法来删除包含在另外一个数组中的数组元素——求交集
http://www.runoob.com/java/arrays-retainall.html
14. contains () 方法来查找数组中的指定元素:
/* author by w3cschool.cc 文件名:Main.java */ import java.util.ArrayList; public class Main { 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("objArray 的数组元素:"+objArray); System.out.println("objArray2 的数组元素:"+objArray2); System.out.println("objArray 是否包含字符串common2? : " +objArray.contains("common1")); System.out.println("objArray2 是否包含数组 objArray? :" +objArray2.contains(objArray) ); } }
结果:
objArray 的数组元素:[common1, common2] objArray2 的数组元素:[common1, common2, notcommon, notcommon1] objArray 是否包含字符串common2? : true objArray2 是否包含数组 objArray? :false
15. equals ()方法来判断数组是否相等
Arrays.equals(ary, ary1));
16.union ()方法求字符串并集
String[] result_union = union(arr1, arr2);
for (a : b) { } // 遍历数组
1.Collection是接口,是容器类的总接口。像那些子接口:set,Queue,List等都继承了这个接口,像实现类:HashSet、ArrayList等都实现了对应的Set、List等接口。 要获取里面的元素很简单,在方法体中,像你代码中的“RosterEntry entry”对象“entry”就是。 2.for(:){……}这个是个JDK1.5的增强for循环也叫for-each.是为了方便遍历数组和collection的.由于collection都实现了Iterable(可迭代的)接口,所以可以用for-each来遍历容器类,示例一: List<String> list=new ArrayList<String>(); list.add("a"); list.add("b"); list.add("c"); for (String str : list) { System.out.println(str); } 另外我最常用的就是遍历数组,示例二 int[] arr = new int[3]; arr[0] = 1; arr[1] =2; arr[2] = 3; for(int i : arr){ System.out.println(i); }