当前位置: 首页 > wzjs >正文

新余网站网站建设西安电子科技大学信息化建设处网站

新余网站网站建设,西安电子科技大学信息化建设处网站,网站建设图片素材库,如何查网站的备案信息Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…

Arrays 类

1. 导入包:import java.util.Arrays

2. 常用方法一览表

方法描述
Arrays.toString()返回数组的字符串形式
Arrays.sort()排序(自然排序定制排序
Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是有序的
Arrays.copyOf()数组元素的复制
Arrays.fill()数组元素的填充
Arrays.equals()比较两个数组内容是否完全一致
Arrays.asList()将一维数组,转换成 List 集合

一、Arrays.toString()

优点:方便查看数组内容,避免了通过遍历来输出内容的繁琐

代码示例

import java.util.Arrays;
public class main {public static void main(String[] args) {int[] arr = {1,2,3,4,5,6};System.out.println(Arrays.toString(arr));}
}// 输出结果
[1, 2, 3, 4, 5, 6]

二、Arrays.sort()重点!

1. 自然排序(底层:快速排序

import java.util.Arrays;
public class main {public static void main(String[] args) {int[] arr = {6,5,9,8,32,1,4};Arrays.sort(arr);System.out.println(Arrays.toString(arr));}
}// 输出结果
[1, 4, 5, 6, 8, 9, 32]

2. 定制排序

(1)引入接口:Comprator

(2)实现接口方法compare

(3)代码示例

1. 原先代码

Arrays.sort(integer_arr, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return 0;}
});

说明:当前还没有学习泛型,代码修改为如下形式

2. 修改后的代码

import java.util.Arrays;
import java.util.Comparator;public class main {public static void main(String[] args) {Integer[] integer_arr = {6,5,9,8,32,1,4};Arrays.sort(integer_arr, new Comparator() {@Overridepublic int compare(Object o1, Object o2) {Integer n1 = (Integer) o1;Integer n2 = (Integer) o2;return n1 - n2;}});System.out.println(Arrays.toString(integer_arr));}
}// 输出结果
[1, 4, 5, 6, 8, 9, 32]

代码说明

三、实现定制排序的底层探究

1. 进入 sort 方法的底层源码

public static <T> void sort(T[] a, Comparator<? super T> c) {if (c == null) {sort(a);} else {if (LegacyMergeSort.userRequested)legacyMergeSort(a, c);elseTimSort.sort(a, 0, a.length, c, null, 0, 0);}
}

2. 进入 TimeSort 类的 sort 方法

static <T> void sort(T[] a, int lo, int hi, Comparator<? super T> c,T[] work, int workBase, int workLen) {assert c != null && a != null && lo >= 0 && lo <= hi && hi <= a.length;int nRemaining  = hi - lo;if (nRemaining < 2)return;  // Arrays of size 0 and 1 are always sorted// If array is small, do a "mini-TimSort" with no mergesif (nRemaining < MIN_MERGE) {int initRunLen = countRunAndMakeAscending(a, lo, hi, c);binarySort(a, lo, hi, lo + initRunLen, c);return;}

3. 进入binarrySort方法

private static <T> void binarySort(T[] a, int lo, int hi, int start,Comparator<? super T> c) {assert lo <= start && start <= hi;if (start == lo)start++;for ( ; start < hi; start++) {T pivot = a[start];// Set left (and right) to the index where a[start] (pivot) belongsint left = lo;int right = start;assert left <= right;/** Invariants:*   pivot >= all in [lo, left).*   pivot <  all in [right, start).*/while (left < right) {int mid = (left + right) >>> 1;if (c.compare(pivot, a[mid]) < 0)right = mid;elseleft = mid + 1;}assert left == right;

4. 本质:通过c.compare(pivot, a[mid])的结果来影响排序结果

核心部分代码

while (left < right) {int mid = (left + right) >>> 1;if (c.compare(pivot, a[mid]) < 0)right = mid;elseleft = mid + 1;
}

总结


四、Arrays.binarySearch()

二分查找方法(返回查找元素下标索引

注意点

底层源码

private static int binarySearch0(int[] a, int fromIndex, int toIndex,int key) {int low = fromIndex;int high = toIndex - 1;while (low <= high) {int mid = (low + high) >>> 1;int midVal = a[mid];if (midVal < key)low = mid + 1;else if (midVal > key)high = mid - 1;elsereturn mid; // key found}return -(low + 1);  // key not found.
}

代码示例

import java.util.Arrays;public class main {public static void main(String[] args) {int[] arr = {1, 2, 3};System.out.println(Arrays.binarySearch(arr, 2));System.out.println(Arrays.binarySearch(arr, 10));}
}// 输出结果
1
-4

代码说明

查找的元素10不存在,应该插入的位置为3下标索引),返回- (low + 1),即- (3 + 1),所以返回-4


五、Arrays.copyOf()

数组的拷贝

代码示例

import java.util.Arrays;public class main {public static void main(String[] args) {int[] arr = {1, 2, 3};int[] new_arr = Arrays.copyOf(arr,arr.length);System.out.println("arr: " + Arrays.toString(arr));System.out.println("new_arr:" + Arrays.toString(new_arr));}
}// 输出结果
arr: [1, 2, 3]
new_arr:[1, 2, 3]

六、Arrays.fill()

使用方法:Arrays.fill(目标数组填充值)

理解:把原数组中的所有数替换成填充数

代码示例

import java.util.Arrays;public class main {public static void main(String[] args) {int[] arr = {1, 2, 3};Arrays.fill(arr,1);System.out.println("after_fill:" + Arrays.toString(arr));}
}// 输出结果
after_fill:[1, 1, 1]

七、Arrays.equals()

比较两个数组的内容是否一致

使用方法:Arrays.equals(数组一数组二)

代码示例

import java.util.Arrays;public class main {public static void main(String[] args) {int[] arr = {1, 2, 3};int[] arr1 = {4,5,6};System.out.println("arr.equals(arr1)? " + Arrays.equals(arr,arr1));}
}// 输出结果
arr.equals(arr1)false

八、Arrays.asList()

1. 将一维数组转成 List 集合

2. 编译类型:List(接口)

3. 运行类型:java.util.Arrays#ArrayList,是 Arrays 类的静态内部类

private static class ArrayList<E> extends AbstractList<E>implements RandomAccess, java.io.Serializable

代码示例

import java.util.Arrays;
import java.util.List;public class main {public static void main(String[] args) {List aslist = Arrays.asList(1,2,3);System.out.println("aslist:" + aslist);System.out.println("getclass():" + aslist.getClass());}
}// 运行结果
aslist:[1, 2, 3]
getclass()class java.util.Arrays$ArrayList
http://www.dtcms.com/wzjs/801752.html

相关文章:

  • 新手用什么框架做网站比较好书籍网站开发多少钱
  • 什么网站可以做微招聘WordPress腾讯对象存储
  • 网站规与网页设计wordpress alipay插件
  • 个人网站备案号被注销wordpress分享
  • 网站建设 发展历程优化推广排名
  • 智冠宝企业网站管理系统高端大气的ppt模板
  • 课程网站开发的研究现状做软件推广网站怎么赚钱
  • 内江网站建设0832hdsj网站源码在线查询
  • 白天做彩票维护的网站什么是搜索引擎优化?
  • 网站域名后缀那个好企业建站业务还能做吗
  • ps个人网站怎么做企业科技网站建设
  • 网站建设文本居中代码wordpress漏洞利用工具
  • 网站上传文件存储方式在线设计平台canva
  • php 做视频网站wordpress略缩图压缩
  • 门户网站如何建设网站多语言建设方案
  • seo网站优化知识要建设一个网站需要什么
  • 宿迁网站建设SEO优化营销国示建设网站
  • 网站切换语言怎么做的长沙市网站推广电话
  • 2017年做那个网站致富WordPress快捷登录如何关闭
  • 网站单页支付宝支付怎么做的成都大丰五块石网站建设
  • 完成门户网站建设制作企业网站的公司
  • 做信息发布类网站用什么语言服务器销售
  • 图片抗锯齿网站临沂网站建设教程
  • 青岛企业如何建网站网站页面维护
  • 网站备案个人信息网站建设优化开发公司排名
  • 南通建设中标查询网站中小企业的网站建设论文
  • 淘宝做网站推广手机网站设计只选亿企邦
  • c asp.net 做网站大丰网站制作
  • 备案查询站长工具绿色资源网下载
  • 公司网站建设规划建设网站具备的知识