Java数据结构与算法之Array数组

leetcode 932. Beautiful Array | 932. 漂亮数组(分治法) 题目 https://leetcode.com/problems/beautiful-array/ 题解 没想出来,最后参考了【分治】通俗的官解分析 的思路。 推理过程 草稿 class Solution { public int[] beautifulArray(int n) { HashMap<Integer, List<Integer>> map = new HashMap<>(); List<Integer 阅读详情

目录:
1.数据概述
2.java数组的初始化
3.java数组API
4.数组排序
5.字符串转数组
6.数组封装后的使用

1. 数据概述

数组是重要的数据结构之一,以线性结构来存储固定数量大小,数据类型相同的数据

2. java数组的初始化

(1)声明和初始化分开

    public static void main(String[] args) {
        //(1)声明和初始化分开
        //申明 数组
        int a [];
        //申请空间
        a = new int[5];
        //根据下标赋值
        //默认值为0
        a[1] = 2;
        for (int i : a) {
            System.out.println(i);
        }

    }

(2)声明初始化同时进行

    public static void main(String[] args) {
        //(2)声明初始化同时进行
        int a  [] = new int[]{1,2,3,4};
        for (int i : a) {
            System.out.println(i);
        }

    }

3. java数组API

(1)java中数组类Arrays的继承关系

    java.lang.Object   
        java.util.Arrays 

(2)常用方法

asList(T... a) //将输入的参数转换成List类型的数据

binarySearch(Object[] a, Object key)//通过二分查找方法,在指定的数组中查找指定的元素,并返回下标

copyOf(Object[] original, int newLength) //将数组复制到另外一个数组中

copyOfRange(Object[] original, int from, int to) //将给定数组的给定区间元素复制到新数组中

equals(Object[] a, Object[] a2) //判断两个数组是否相等,也就是长度和元素值是否一致

deepEquals(Object[] a1, Object[] a2) //常用来比较多维数组

fill(Object[] a, Object val) //将指定的基本数据类型值分配到指定基本类型数组的每一项

fill(Object[] a, int fromIndex, int toIndex, Object val) //指定分配到指定的区间

sort(Object[] a)//增序排列

sort(Object[] a, int fromIndex, int toIndex) //指定需要排序的数组区间

toString(Object[] a) //转换成字符串类型

4. 数组排序

java中对数组的排序有两种方法,第一种是直接使用API中的sort(Object[] a)方法进行排序或者采用算法中的
各类算法,比如:冒泡排序,选择排序,插入排序,归并排序等等。

5. 字符串转数组

(1)字符串转char[]

str="hello";  
char [] charArray = str.toCharArray(); 

(2)字符串转int[]

 public static void StringToArray(String str){  
        char[] ch;  
        int [] i;  
        int len;  
        //string长度  
        len = str.trim().length();  
        //初始化int数组  
        i=new int[len];  
        //通过charAt()取得单个字符转换成String类型再通过parseInt()转换成int类型  
        for (int j = 0; j < len; j++) {  
            i[j] =Integer.parseInt(String.valueOf(str.charAt(j)));  
        }         
        //int数组输出  
        System.out.println("int数组输出:");  
        for (int j = 0; j < i.length; j++) {  
            System.out.print(i[j]+"\t");  
        }  

    }  

6. 数组封装后的使用

public class UseArray {  
    private int[] array;  
    private int number = 0;  
    public UseArray(int max){  
        array = new int[max];  
    }  
    public void insert(int value){  
        array[number] = value;  
        number++;  
    }  
    public int find(int value){  
        for (int i= 0; i < number; i++) {  
            if(array[i]==value)  
                return i;  
        }  
        return number;  
    }  

    public boolean delete(int value){  
        int index = find(value);  
        if(index != number){  
            for (int i = index; i < number-1; i++) {  
                array[i] = array[i+1];  
            }  
            number--;  
            return true;  
        }  
        return false;  
    }  

    public void display(){  
        for (int i = 0; i < number; i++) {  
            System.out.printf(array[i]+" ");  
        }  
    }  
    public static void main(String[] args) {  
        UseArray ua  = new UseArray(5);  
        ua.insert(1);  
        ua.insert(2);  
        ua.insert(6);  
        ua.insert(7);  
        ua.insert(3);  

        ua.display();  
        if(ua.find(5) != ua.number){  
            System.out.println("find,the number index is "+ua.find(5));  
        }else{  
            System.out.println("not found!");  
        }  
        if(ua.delete(5)!=true){  
            System.out.println("can not delete!");  
        }  
        ua.display();  
    }  
}  

优化查找(二分查找)

    private static int find(int[] array, int value) {
        int start = 0;
        int end = array.length-1;
        while(start <= end){
            int mid = (end + start) / 2;
            int midValue = array[mid];
            if (midValue < value)
                start = mid + 1 ;
            else if (midValue > value)
                end = mid -1;
            else
                return mid;

        }
        return -1;
    }
1015 德才论 (25分)【Java题解】 题解 首先说明这题用java来做会超时T_T ,今天用java 类数组+Array.sort()敲了一套代码,发现会超时,然后看网上是用ArrayList 容器 我就把 数组改成容器来做 ,发现还是超时,最后用了C++来做,好家伙,C++的测试点4也快超时 怪不得java总是超时。 思路: 1.对人标记分类 (隐藏的 一级分类) 2.用compare() 多级排序,其对象带入sort中。 #include <bits/stdc++.h> using na... 阅读详情

相关推荐

JAVA:实现Array Left Rotation数组左旋转算法(附完整源码)

JAVA:实现Array Left Rotation数组左旋转算法(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 459

Java 数组的基本使用【Array】

Java 数组是一种用于存储多个同类型元素的线性数据结构 ···

低调,谦虚,自律,反思,成长! 1477

VSAN数据救援实战:当26个虚拟机突然不可访问时我们做了什么?

本文深度复盘了一次由运维操作失误引发的VMware vSAN存储危机,导致26个虚拟机数据不可访问的实战救援过程。文章详细剖析了vSAN脑裂状态的诊断方法,分享了在官方支持受限时,如何结合社区智慧与自主分析,通过精准的底层命令干预和状态推理,最终成功恢复全部数据的破局思路与操作细节,为vSAN数据救援提供了宝贵经验。

weixin_35749786的博客 237

Java数据结构与算法 - 数组

数据结构与算法学习,参考的书籍为《Java数据结构与算法》。

呵呵 846

8155平台multi-display(多屏显示)原理与配置

8155平台多屏互动原理与配置

漂流瓶の海岸 1606

Vector CANape的使用记录

开门见山,今天想和大家分享下CANape使用记录,分享原因是近日在分析一个客户现场软件问题时,需要用到CANape来实时的监测ECU中的变量,因为之前对CANape的认知比较浅薄,觉得标定工程师使用他就足够了,但是这次的经历让我觉得需要写点东西来记录自己学习并使用他的过程。 相信大家能够在网上找到很多关于如何使用CANape的文章,从新建Project到后面的数据的观测、保存以及回放等等。我个人也是这么学过来的,所以我不打算从那些方面着手去描述如何使用她,而是根据我的真实使用过程以及问题的抛出到如何解决来

2万+

GitHub上分享的常用算法和数据结构实现原理可视化系统

一门编程语言入门之后,要想进阶,必须学习算法和数据结构,但是对于初学者来讲算法和数据结构和数据结构的实现原理和机制过于枯涩、抽象难懂。 这里为小伙伴们分享一个名为Algorithm Visualizer的直观的算法可视化工具,在里面你可以自由选择自己想学习的算法,每个算法它都清晰描绘了其原理和运作过程。目前支持的算法非常多包括回溯法、加密算法、动态规划、图搜索、贪婪算法、搜索算法、排序算法等。 ...

不脱发的程序猿 4578

akshare 布林通道策略

import datetime import pandas as pd import backtrader as bt import matplotlib.pyplot as plt from datetime import datetime import matplotlib import akshare as ak %matplotlib inline class Boll_strategy(bt.Strategy): #自定义参数,每次买入1800手 params=(('size'.

qq_26742269的博客 5338

java进阶-常用数据结构以及算法思想

常用数据结构数组、链表、堆、栈、队列、Hash表、二叉树等算法思想算法时间复杂度和空间复杂度的分析计算 算法思想:递推、递归、穷举、贪心、分治、动态规划、迭代、分枝界限以下是部分代码package com.cn.learn;import com.cn.entity.Goods; import org.junit.Test;import java.util.*;/** * 描述:算法学习 *

Pzwdshxzt 的博客 693

保姆级教程:在ROS Noetic下,手把手教你将自定义A*全局规划器打包成插件(附避坑指南)

本文提供了一份详细的ROS Noetic下自定义A*全局规划器插件开发指南,涵盖从环境准备、算法优化到插件配置与调试的全流程。通过实战案例和避坑技巧,帮助开发者高效实现机器人导航中的全局路径规划,特别适合需要优化ROS导航栈的开发者。

weixin_29168675的博客 285

基于STM32的智能火灾报警系统设计:多传感器融合与远程控制实现

本文详细介绍基于STM32单片机的智能火灾报警系统设计,采用多传感器融合技术(烟雾、温度、火焰检测)实现高精度火灾识别。系统集成远程控制与手机APP监控,通过加权决策算法降低误报率,提供多级响应策略,确保火灾预警的准确性与可靠性。

u5v6w7的博客 1103

Java数据结构与算法之数组

一、前言 谈及数组,大家应该都很熟悉。数组是一种基础的线性表,在实际的编程过程及面试过程中数据的也是高频出现的数据结构之一,而且应用场合也涉及的非常广。而对于数组这种基本的数据结构,到底掌握了多少? 二、数组的特点 先简单回忆下数组: String [] arr1 = new String [5]; int [] arr2 = {1,2,3}; 从上面的代码中来分析下数组的基本特点: ...

anyway8090的博客 372

【Flink】FLink session yarn kerberos认证报错 PortUnreachableException: ICMP Port Unreachable

本篇博客是在上一篇博客:【Flink】FLink session yarn kerberos认证报错 KrbException: Cannot locate default realm还没找到原因的时候做的一次尝试。因为项目需要,我们需要对接华为认证的yarn集群,运行flink任务,我们的任务分为两种,yarn pre-job模式和flink session模式。我们在配置文件中配置如下# kerberos认证需要的东西提交任务的脚本如下。

九师兄 1267

【数据结构与算法(Java)】稀疏数组 Sparse Array

1. 应用场景 某个数组中大部分元素的值是0或者同一值,可以用 “稀疏数组” 来保存。 eg. 0 0 0 0 0 0 0 0 2 0 0 3 0 0 0 0 0 8 0 0 0 1 0 0 0 0 0 0 0 5 0 0 0 9 0 2. 处理思路 (1)思路 [0] 记录 “有几行几列” ,有多少 “不同的值” [1]-[n] 把 “不同的值” 的 ”行”、“列”和“值” 记录在一个 “小数组” 里 例1. 原始二维数组 0 0 0 0 0 0 0 0 2 0 0 3 0 0 0 0 0 8 0 0

hoyyoung的博客 221

【OpenFOAM】-olaFlow-算例6- waveFloatingObject

波浪作用下的浮体的刚体运动,属于流固耦合(FSI)问题

ou_no的博客 3539

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Java数据结构与算法--稀疏数组(Sparse Array)

1. 稀疏Sparsearray数组 1.1 先看一个实际的需求 编写的五子棋程序中,有存盘退出和续上盘的功能。 分析问题: 因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据-->稀疏数组。 1.2 稀疏数组 1.2.1 基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 1.2.2 稀疏数组的处理方法是 记录数组一共有几行几列,有多少个不同的值。 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的

当一个合格的软件工程师 1922

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

数据结构和算法(Java版)快速学习(数组Array)

Java数组 在Java中,数组是用来存放同一种数据类型的集合,注意只能存放同一种数据类型。 用类封装数组实现数据结构 数据结构必须具有以下基本功能:   ①、如何插入一条新的数据项   ②、如何寻找某一特定的数据项   ③、如何删除某一特定的数据项   ④、如何迭代的访问各个数据项,以便进行显示或其他操作   而我们知道了数组的简单用法,现在用类的思想封装一个数组,实现上面...

weixin_30416497的博客 117

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Array数组动态扩容

Array数组动态扩容

xiaonan678的博客 475

JAVA数组

数组是相同类型数据的有序结合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个数组元素,每一个数组元素可以通过一个下标来访问它们。

bumengbuzhangfu的博客 252

Java新手学习之数组

数组的概述 1.数组的理解 数组array是多个相同类型数据按照一i的那个顺序排列的集合,并使用同一个名字命名,并通过编号的方式对这些数据进行统一的管理。 2.特点 数组是有序排列的 数组属于引用类型的变量,数组的元素,可以是基本数据类型,也可以是引用数据类型 创建数组对象在内存中开辟一整块连续的空间 数组的长度一旦确定,就不能修改 3.数组的分类 按照维数:一维数组,二维数组、、、、 按照元素的...

LemonYaQian的博客 628

Java基础-----数组和数据存储

关于数组,你知道吗?

qq_48788523的博客 728

Java差值数组

例题来源于力扣

pmathy的博客 30

【LeetCode数组篇 / Java实现】1929. 数组串联(简单)

LeetCode数组篇 数组拷贝

guliguliguliguli的博客 161

LeetCode常见题型——数据结构属性

巧用Java和C++ STL 提供的数据结构

贫道绝缘子的博客 1094

基础语法7.数组

本文介绍了Java中一维和二维数组的基本概念及操作方法。一维数组可通过两种方式创建,使用.length获取长度,通过下标访问元素(从0开始)。二维数组是存储一维数组的数组,可通过行列下标访问元素,.length获取行数,[行号].length获取列数。文章提供了数组声明、初始化、存取元素的代码示例,并说明了如何用循环遍历数组。二维数组示例展示了嵌套初始化方式和元素访问方法。这些基础操作是Java数组编程的核心内容。

2601_96672694的博客 172
上一篇: Java数据结构与算法之学习
下一篇: 排序算法及复杂度
yjgithub
博客等级 码龄11年 53粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值