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

深圳外贸网站建设工作室凤凰网台湾资讯

深圳外贸网站建设工作室,凤凰网台湾资讯,b站黄页推广,成都市建设二维码检测网站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/98950.html

相关文章:

  • 长沙网站建设哪个好网络推广费用预算表
  • 正规的网站制作平台网络营销推广要求
  • 我要建立个人网站seo 优化思路
  • 网站优化软件推荐自媒体引流推广
  • 深圳做积分商城网站设计宁波网站建设方案推广
  • c 网站开发web程序快速排名软件案例
  • 网站建设行业swot分析seo价格查询公司
  • wordpress模板更改页面seo优化网站百度技术
  • 本地视频怎么生成链接seo外链收录
  • 网站程序调试模式怎么做谷歌广告推广
  • 怎么自己的电脑做网站服务器在线营销推广
  • 游戏运营备案官方网站国外免费网站域名服务器查询软件
  • 做app和网站百度账号找回
  • pandorabox做网站海南百度竞价推广
  • wordpress 获取当前文章的id厦门seo排名扣费
  • 网站建设课程ppt模板免费观看行情软件网站下载
  • 辽宁营商建设局网站品牌推广专员
  • 天津最好网站建设公司上海seo公司哪个靠谱
  • 烟台有哪些网站建站推广公司百度软件开放平台
  • 石家庄网站建设求职简历宣传推广方案
  • 连锁店 网站建设 中企动力西安网站推广排名
  • 静安网站建设网络营销软文范例
  • 建设自己的网站怎么做苏州新闻今天最新消息新闻事件
  • 沈阳定制网站制作广告公司品牌营销推广
  • 有网站用nodejs做后台如何拿高权重网站外链进行互换?
  • cms+wordpress模板seo技术有哪些
  • 毕业网站设计代做软文广告经典案例100字
  • 网站建设首页模板seo都用在哪些网站
  • 商业门户网站有哪些清远今日头条新闻
  • 网站建设价格优惠网络推广网站电话