Java方法-数组

【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);
}

 

posted @ 2015-09-13 14:36  misybing  阅读(708)  评论(0编辑  收藏  举报