Arrays类

基本介绍

  • 数组的工具类java.util.Arrays
  • 由于数组本身中没有什么方法可供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本操作
  • 查看jdk帮助文档
  • Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而不用使用对象来调用(是不用不是不能)
  • 常用功能:a.给数组赋值通过fill方法;b.对数组排序通过sort方法按升序;c.比较数组通过equals方法比较数组中元素值是否相等

运用实例

import java.util.Arrays;
public class Array {
public static void main(String[] args) {
int[] a={4,5226,846,57,569,336,5,2,1};
System.out.println(a);//输出:[I@1540e19d //打印出数组中的元素,调用了Arrays类中的toString方法
System.out.println(Arrays.toString(a));//输出[4, 5226, 846, 57, 569, 336, 5, 2, 1]
//调用PrintArrays方法
PrintArray(a); //数组排序:升序
Arrays.sort(a);
System.out.println(Arrays.toString(a)); //数组填充:把val中的值替换掉数组中的值
Arrays.fill(a,0);
System.out.println(Arrays.toString(a));
//数组填充:把val中的值替换掉数组中2-4(不包含4)之间的元素值
Arrays.fill(a,2,4,0);
System.out.println(Arrays.toString(a));
}
//Arrays类中的方法也是程序员编写的,我们自己也可以编写出来
//定义一个打印数组中的元素的方法
public static int[] PrintArray(int[] a){
for (int i = 0; i < a.length; i++) {
if (i==0){
System.out.print("[");
}
if (i==a.length-1){
System.out.println(a[a.length-1]+"]");
}else{
System.out.print(a[i]+", ");
}
}
return a;
}
}

冒泡排序

基本介绍

  • 冒泡排序是最出名的排序算法之一。总共由八大排序
  • 代码:两成循环,外层冒泡轮数,里层依次比较,江湖中人尽皆知
  • 算法复杂度为O(n^2)

运用实例

import java.util.Arrays;
public class PaiXu {
public static void main(String[] args) {
int[] a={4,85,69,2,47,9546,1};
MaoPao(a);
} //冒泡排序
//1.比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换它们的位置
//2.每一次比较都会产生一个最大的或者最小的数
//3.下一轮则可以少一次排序
//4.依次循环,知道结束
public static void MaoPao(int[] a){
int tep;
boolean flag=false;//通过flag标识位减少没有意义的排序
//外层循环,判断需要走多少次
for (int i = 0; i < a.length-1; i++) {
//里层循环,比较两个相邻的元素,如果第一个数比第二个数大,我们就交换它们的位置
for (int j = 0; j < a.length-1; j++) {
if (a[j]>a[j+1]){
tep=a[j];
a[j]=a[j+1];
a[j+1]=tep;
flag=true;
}
}
if(flag==false){
break;
}
}
System.out.println("冒牌排序输出结果:"+ Arrays.toString(a));
}
}

稀疏数组

  • 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组
  • 稀疏数组的处理方式:
    • 记录数组一共有几行几列,有多少个不同值
    • 把具有不同的值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模

运用实例

public class XiShu {
public static void main(String[] args) {
//创建一个二维数组11*11 0:表示没有棋子 1:黑棋 2.白棋
int[][] a=new int[11][11];
a[1][2]=1;
a[2][3]=2; //输出原始数组
System.out.println("输出原始数组");
for (int[] ints : a) {
for (int anInt : ints) {
System.out.print(anInt+"\t");
}
System.out.println();
} //转换为稀疏数组保存
//获取有效值的个数
int count=0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (a[i][j]!=0){
count++;
}
}
}
System.out.println("有效值的个数为:"+count);
//创建一个稀疏数组
int[][] b=new int[count+1][3];
b[0][0]=11;
b[0][1]=11;
b[0][2]=count;
//遍历二维数组,将非零的值,存入稀疏数组中
int sum=0;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
if (a[i][j]!=0){
sum++;
b[sum][0]=i;
b[sum][1]=j;
b[sum][2]=a[i][j];
}
}
}
//遍历稀疏数组
System.out.println("输出稀疏数组:");
for (int i = 0; i < b.length; i++) {
for (int j = 0; j < b[i].length; j++) {
System.out.print(b[i][j]+"\t");
}
System.out.println();
} //稀疏数组还原成原来的数组
//读取稀疏数组
int[][] c=new int[b[0][0]][b[0][1]];
//给其中的元素还原它的值
for (int i = 1; i < b.length; i++) {
c[b[i][0]][b[i][1]]=b[i][2];
}
//打印数组
System.out.println("输出原始数组:");
for (int i = 0; i < c.length; i++) {
for (int j = 0; j < c[i].length; j++) {
System.out.print(c[i][j]+"\t");
}
System.out.println();
}
}
}

数组扩展(Java)的更多相关文章

  1. Java数组扩展

    Java中,数组初始化后如何扩展数组? 示例 以下示例显示如何在创建新并初始化数组后扩展数组. package com.yiibai; public class ExtendingArray { pu ...

  2. js 判断数组包含某值的方法 和 javascript数组扩展indexOf()方法

    var  questionId = []; var anSwerIdValue = []; ////javascript数组扩展indexOf()方法 Array.prototype.indexOf ...

  3. javascript中的数组扩展(一)

     javascript中的数组扩展(一) 随着学习的深入,发现需要学习的关于数组的内容也越来越多,后面将会慢慢归纳,有的是对前面的强化,有些则是关于前面的补充. 一.数组的本质    数组是按照次序排 ...

  4. ES6数组扩展

    前面的话 数组是一种基础的JS对象,随着时间推进,JS中的其他部分一直在演进,而直到ES5标准才为数组对象引入一些新方法来简化使用.ES6标准继续改进数组,添加了很多新功能.本文将详细介绍ES6数组扩 ...

  5. es6基础(6)--数组扩展

    //数组扩展 { let arr=Array.of(3,4,6,7,9,11);//可以是空 console.log('arr=',arr);//[3,4,6,7,9,11] } { //Array. ...

  6. ES6入门教程---数值扩展和数组扩展

    1.数值扩展 var num = 0b11; console.log(num);3 var num = 0o11;console.log(num);9 var num = 1.234; console ...

  7. NOJ——1669xor的难题(详细的树状数组扩展—异或求和)

    [1669] xor的难题 时间限制: 1000 ms 内存限制: 65535 K 问题描述 最近Alex学长有个问题被困扰了很久,就是有同学给他n个数,然后给你m个查询,然后每个查询给你l和r(左下 ...

  8. 作业2-浅谈数组求和java实验

              这次作业呢,我是用java来写的,虽然java只是自己假期里看的一点点,但是人总是要接触新事物的,应该不断向前.          说明:这次作业有一个遗憾,就是我花了一个下午真真 ...

  9. java数组、java.lang.String、java.util.Arrays、java.lang.Object的toString()方法和equals()方法详解

    public class Test { public static void main(String[] args) { int[] a = {1, 2, 4, 6}; int[] b = a; in ...

  10. ES6数组扩展运算符

    1 扩展运算符的运用 (1)复制数组 数组是复合的数据类型,直接复制的话,只是复制了指向底层数据机构的指针,而不是克隆一个全新的数组; const a1=[1,2]; const a2= a1; a2 ...

随机推荐

  1. secret或configmap对象key名称带点,env命令不显示分析

    分享一个最近在排查的问题: k8s的 secret 或 configmap 对象,如果 key 名称是带[.]的,比如[a.b.c .db.host]这种名称,注入到POD后,使用env等命令查看不到 ...

  2. 如何通过使用vscode工具学习ts(typescript)

    1 如果有vscode工具可自行忽略这条:如果没有vscode工具,可进入官网http://vscode.p2hp.com/进行下载,下载过程可自行百度. 2 D盘新建文件夹随意命名为TS-LEAN, ...

  3. git 提交本地仓库到远程

    提交本地仓库到远程指定仓库 假如已经在远程github创建了项目 在本地创建了和github同样工程并添加了代码,如eclipse创建出工程并写了代码.要把这些代码提交到github git bash ...

  4. win10关闭自动更新的方法

    win10关闭自动更新的方法和步骤: 一.禁用Windows Update服务 1.打开服务项,win+r 输入 services.msc ,或者控制面板-管理工具-服务. 2.找到 Windows ...

  5. centos7.2下配置dhcp v4或v6服务

    1.centos7.2下配置dhcp v4或v6服务 安装dhcp-server centos7及以前版本的操作系统使用命令: yum install dhcp centos8使用命令: yum in ...

  6. C++的switch/case,需要大括号

    如果,switch/case的某一条case语句包含初始化定义变量,例如int i. 那么case后面的语句,需要用大括号包装起来. 原因如下: https://stackoverflow.com/q ...

  7. centos6.5升级python3.6并安装boto3模块

    1.先升级openssl yum安装各种依赖,yum install gcc gcc-c++ autoconf automake zlib zlib-devel pcre-devel tar zxvf ...

  8. Python用telnet设置,抓UDP抓采样点并显示

    ====main.bat==== echo off rem "d:\Program\WiresharkPortable64\App\Wireshark\tshark.exe" -- ...

  9. 最简单的asp验证码

    <%Public Function BornVerifyCode()         Randomize '设置随机因子         BornVerifyCode=Mid((Rnd * 10 ...

  10. mac怎么设置开机自启动项,mac选择开机启动项

    转自 https://www.zhangshilong.cn/work/386853.html Login Items Mac OSX的当前用户成功登录后启动的程序,该类别的启动项配置文件存放在~/L ...