数组的排序和搜索

主要讲解Arrays类

1。Arrays常用方法

package com.yinbodotcc;
/*
 *
 * 数组的排序和搜索
 * List拥有的排序和搜索方法和Arrays对应差不多
 *
 */
import java.util.Scanner;
import java.util.Arrays;
import java.util.*;

这个类作为Arrays排序的依据,主要用来排序String数组
class MyCompatator implements Comparator
{
 public int compare(Object one,Object two)
 {
  String oneS=(String)one;
  String twoS=(String)two;
  return oneS.compareToIgnoreCase(twoS);
 }
 
}

 

//
public class MyArrays1
{
 public static void main(String[]args)
 {
 
 
  //Arrays类为所有基本数据类型的数组提供了一个过载的sort()和binarySearch()
 
  Scanner scanner = new Scanner(System.in);
  int[] arr = {1, 2, 3, 4, 5, 6, 7 ,8, 9};
 
     System.out.print("排序前: ");
     for(int i = 0; i < arr.length; i++)
         System.out.print(arr[i] + " ");
     System.out.println();

     Arrays.sort(arr);

     System.out.print("排序后: ");
     for(int i = 0; i < arr.length; i++)
         System.out.print(arr[i] + " ");

    
    
   
     System.out.print("/n输入要搜索的值: ");
     int key = scanner.nextInt();
     int index = -1;
     if((index = Arrays.binarySearch(arr, key)) > -1) {
         System.out.println("找到值於索引 " +
                                    index + " 位置");
     }
     else
         System.out.println("找不到指定值");
    
    
    
    
     int arrFill[]=new int[6];
     Arrays.fill(arrFill, 3);
     for(int temp:arrFill)
      System.out.println(temp);
    
     int arrEquals[]=new int[6];
     Arrays.fill(arrEquals, 3);
     System.out.println(Arrays.equals(arrFill, arrEquals));
    
     ///
     System.out.println(Arrays.toString(arrFill));
    
     //
     int arrTwoD1[][]={{1,2,3},{4,5,6}};
     int arrTwoD2[][]={{1,2,3},{4,5,6}};
     System.out.println(Arrays.equals(arrTwoD1, arrTwoD2));//false
    
     System.out.println(Arrays.deepEquals(arrTwoD1, arrTwoD2));//true,所以可以用来比较2维数组
     //
     System.out.println(Arrays.toString(arrTwoD1));//[[I@de6ced, [I@c17164]
     System.out.println(Arrays.deepToString(arrTwoD1));//[[1, 2, 3], [4, 5, 6]]所以可以用来输出多维数组
    
    
    
     ///
     byte b[]=new byte[8];
     Random r=new Random();
     r.nextBytes(b);
     System.out.println(Arrays.toString(b));
    
     String s="ACbdefgaBcDEFG";
     char c[]=s.toCharArray();
     Arrays.sort(c);
     String tempString=new String(c);
     System.out.printf("%s%n", tempString);
    
     ///
    String[] sa={"ABCDEFGa","abcdefg"} ;
    Arrays.sort(sa,new MyCompatator());//按照我们的比较规则排列
    for(String temp:sa)
     System.out.println(temp);
    int index1 = -1;
    //下面这个比较没有new MyCompatator()时,会报告找不到,所以一定要有
    if((index1 = Arrays.binarySearch(sa, "ABCDEFGa",new MyCompatator())) > -1) {
        System.out.println("找到值於索引 " +
                                   index1 + " 位置");
    }
    else
        System.out.println("找不到指定值");
  
 }
}
 

2。某个类本身就有种自身的排序规则

package com.yinbodotcc;
import java.util.Arrays;
public class MyArrays2 implements Comparable
{
 private int i;
 public MyArrays2(int i)
 {
  this.i=i;
 }
 public int compareTo(Object o)
 {
  int j=((MyArrays2)o).i;
  return i>j?1:(i==j?0:-1);
 }
 
 public String toString()
 {
  return i+"";
 }
 public static void main(String args[])
 {
  MyArrays2 []m={new MyArrays2(2),new MyArrays2(1)};
  Arrays.sort(m);//如果这个类没有实现Comparable
  for(MyArrays2 one:m)
   System.out.println(one);
 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值