操纵java数组-Java基础-Java-编程开发

JAVA基础篇-Java 数组 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

如果你做过很多java程序,你可能对java集合类很熟悉,例如Vector和ArrayList。你可以创建一个集合并向其中增加元素:

List lst = new ArrayList ();
lst.add( new Integer (37));

在这个特殊的范例中,一个整型值37用于构造一个Integer封装类对象,然后那个对象被加入到列表。

这个简单的范例展示集合的一个基础-他们用于操纵一列对象,其中的每个对象是一个类或者接口类型。因此,一个ArrayList可以包含Object,String,Float以及Runnable类型的对象。集合类不能用于原始数据类型的列表,例如整型数组。

如果你在你的程序中使用原始类型的数组,你如何操纵它们呢?这个技巧就给你展示几个你可以使用的技术。

第一个技术是排序。java.util.Arrays类包含一套排序和查找数组的类方法,例如:

import java.util. Arrays ;
public class ArrayDemo1 {
public static void main( String args[]) {
int vec[] = {37, 47, 23, -5, 19, 56};
Arrays .sort(vec);
for ( int i = 0; i < vec. length ; i ) {
System .out.println(vec[i]);
}
}
}

这个演示程序初始化一个整数数组然后调用Arrays.sort升序排序那个数组。

类似的,你可以在排完序的数组上进行二分法查找:

import java.util. Arrays ;
public class ArrayDemo2 {
public static void main( String args[]) {
int vec[] = {-5, 19, 23, 37, 47, 56};
int slot = Arrays .binarySearch(vec, 35);
slot = -(slot 1);
System .out.println( "insertion point = " slot);
}
}

这个程序有个微妙的概念,如果二分法查找失败它将返回:

-(insertion point) - 1

这个演示程序以参数35调用查找方法,而那个参数在数组中不存在,方法返回值-4,如果这个值加一再取其负数就得到3,这就是35应该被插入到数组中的位置,换言之,值-5, 19和23在数组中占据的位置是0,1和2。因此值35应该在索引3的位置,而37, 47以及56顺延。搜索方法并不进行实际的插入操作而只是指出应该在何处插入。

除了排序和查找,我们还可以对原始类型数组做什么?另一个有用的技术是将一个原始数组转换为等价的对象类型数组。每个对应元素使用它们的封装器类,例如在封装数组中,37成为Integer(37)。

import java.util. Arrays ;
import java.lang.reflect. Array ;
public class ArrayDemo3 {
// if input is a single-dimension primitive array,
// return a new array consisting of wrapped elements,
// else just return input argument
public static Object toArray( Object vec) {
// if null, return
if (vec == null ) {
return vec;
}
// if not an array or elements not primitive, return
Class cls = vec.getClass();
if (!cls.isArray()) {
return vec;
}
if (!cls.getComponentType().isPrimitive()) {
return vec;
}
// get array length and create Object output array
int length = Array .getLength(vec);
Object newvec[] = new Object [ length ];
// wrap and copy elements
for ( int i = 0; i < length ; i ) {
newvec[i] = Array .get(vec, i);
}
return newvec;
}
public static void main( String args[]) {
// create a primitive array
int vec[] = new int []{1, 2, 3};
// wrap it
Object wrappedvec[] = ( Object [])toArray(vec);
// display result
for ( int i = 0; i < wrappedvec. length ; i ) {
System .out.println(wrappedvec[i]);
}
}
}

方法"toArray"的参数是一个Object对象(数组可以被赋值给一个Object引用)。如果参数是null或者代表的不是原始类型数组那么这个方法简单的返回参数值。java.lang.Class工具类用于判断参数是否是一个数组并获取数组的底层元素的类型。

一旦做完这些检查,使用java.lang.reflect.Array工具类的反射工具方法就可以获取原始数组的长度并获得数组的单个元素。Array.get获得的每个元素被返回到封装器类中,例如Integer或者Double。

最终的范例基于前面的那个并向你展示如何在数组上使用集合特性。这假设你已经有一个对象数组。

import java.util. Arrays ;
import java.util. List ;
public class ArrayDemo4 {
public static void main( String args[]) {
Object vec[] = { new Integer (37), new Integer (47)};
List lst = Arrays .asList(vec);
lst.set(1, new Integer (57));
for ( int i = 0; i < vec. length ; i ) {
System .out.println(vec[i]);
}
}
}

在这个程序中,vec是一个对象数组,包含Integer(37)和Integer(47),然后Arrays.asList被调用。它返回一个集合(List接口类型),使用数组作为集合的后台存储。换言之,ArrayList这样的集合类型在它内部有某种存储类型去存储集合元素。在这个例子中,使用的存储类型是作为参数传递到Arrays.asList的数组。这意味着集合方法所做的改变会被反射到底层的数组。

修改集合中的元素1导致底层的数组也改变,程序的输出是:

37

57

因此如果你有一个对象数组,你可以在它上面使用集合特性,数组自身作为底层存储。

我们也可以将集合转换为一个对象数组,例如:

Object vec[] = lst.toArray();

java在线观看(jav在线网站) java在线网站给大家展示6个java在线网站)。后面还有java在线API,各种java在线在线api地址。 java在线观看1、LintCode Java学习爱好者的福音,和LeetCode类似,也是一个刷题的OJ网站,提供闯关式的阶梯训练以及国内外知名大厂的笔试面试真题。它不仅有算法题、数据库题、Java题目可以刷,还有Java和Sql的教程的手把手教程,一遍做题一边学习加深印象,非常地贴心,不过网站内容更适合Java学习爱好者。 阅读详情

相关推荐

java视频种子(超多30G)

全是学习的视频,2010传智播客struts2.1.8视频教程,张孝祥Java基础加强,还有面试题

反射、xml解析

反射: 反射就读取class文件,获取该文件中的属性、方法等, 作用:用来获取指定路径下的class文件中所具备的的所有属性和方法。 //返回Class对象的方式之一:getClass(); //每一个引用数据类型都有一个getClass的方法,返回的是该类的Class对象 public static void reflex() { User user = new User(); Class cls = user.getClass(); Class cls2 = user.getClass()

weixin_52233021的博客 591

JAV.zip_jaV.H0D_jav.com_jav513_javjobvideo日韩_vjav

yrtos_ MULTITASKING RTOS,.

欢迎光临 Javen-Studio 新网址:http://javenstudio.org

 欢迎光临 Javen-Studio 新网址:http://javenstudio.org 

navychen的专栏 2万+

STM32H743必要外围电路分析

写在前面:这篇博客是我第一次绘制STM32最小系统板的过程记录。 2020-1-11 BOOT STM32采用ARM内核,和ARM处理器一样,都有专门的boot脚决定单片机从何处启动。 在官方数据手册的第105页,我们可以看到 系统复位后,在SYSTICK的第四个上升沿锁存BOOT引脚的值,复位后,BOOT引脚可以由用户自由配置而不会影响系统正常运行。 BOOT引脚决定了自举存储器地址,当BO...

Cui_Hongwei的博客 1万+

STM32使用HAL库实现ModbusRTU主站核心要点

深入解析STM32如何利用HAL库高效实现ModbusRTU主站通信,重点讲解串口配置、定时控制与modbusrtu协议帧的构建方法,提升嵌入式通信稳定性与实时性。

weixin_42668301的博客 374

操纵java数组

如果你做过很多java程序,你可能对java集合类很熟悉,例如:Vector和ArrayList。你可以创建一个集合并向其中增加元素:    List lst = new ArrayList();    lst.add(new Integer(37));在这个特殊的范例中,一个整型值37用于构造一个Integer封装类对象,然后那个对象被加入到列表。这个简单的范例展示集合的一个基础-他们用于操纵一

键者天行 6268

【BAT32G113-仿真器及脱机烧录器教程-A3-2024/9/19】

提示:此壁纸收集于互联网,如有侵权,请联系作者!今日下班,闲来无事,就与生活中在乎的人闲日常,互相彼此增进一些友谊或爱意情愫!在座的朋友看到这里,有时间,抽抽空,多多联系一下,身边重要的人哟!四种指示灯和一个按钮:MODE->代表红色POWER->代表黄色ACTIVE->代表蓝色STATUS->代表XX(不记得了)黑色按钮:按键上电,会进入升级模式,这里我们一般默认不需要改变!仿真工具-ICE8-PRO介绍隶属于产品分支里。烧写工具-CMS-WRITER8 LITE介绍点击。

星新计划的博客 8274

java byte数组 偏移_实例解析Java byte数组操纵方式代码

实例解析Java byte数组操纵方式代码字节数组的关键在于它为存储在该部分内存中的每个8位值提供索引(快速),精确的原始访问,并且您可以对这些字节进行操作以控制每个位。 坏处是计算机只将每个条目视为一个独立的8位数 - 这可能是你的程序正在处理的,或者你可能更喜欢一些强大的数据类型,如跟踪自己的长度和增长的字符串 根据需要,或者一个浮点数,让你存储说3.14而不考虑按位表示。 作为数据类型,在长...

weixin_29056101的博客 332

InsightFace实战:如何在树莓派上部署轻量级人脸识别系统(附完整代码)

本文详细介绍了如何在树莓派上部署基于InsightFace框架的轻量级人脸识别系统。通过硬件选型、环境配置、模型优化(如MobileFaceNet)及完整代码实战,指导开发者构建本地化、低功耗的智能应用,如智能门铃,并提供了性能调优与系统服务化的进阶技巧。

weixin_29043895的博客 352

在Windows10上安装WSL2

WSL2是微软提供的Windows子系统,允许在Windows 10和11上运行Linux环境,提供更好的性能和兼容性。安装WSL2需要启用WSL功能、更新系统、安装WSL2内核,并设置为默认版本。之后,可以通过Microsoft Store安装Linux发行版,并使用WSL命令启动和管理它们。

howard2005的专栏 5943

Java元编程进阶:运行时字节码操纵与动态代理性能优化

通过本文的深入探讨,我们了解了Java元编程的高级主题:运行时字节码操纵与动态代理性能优化。从反射机制的基础回顾,到ASM框架的深入使用,再到高性能动态代理和AOP框架的实现,我们逐步深入了这个强大而复杂的技术领域。字节码操纵技术为Java开发者提供了前所未有的灵活性和控制力,但同时也带来了复杂性和维护挑战。在实际项目中,我们需要谨慎评估使用这些技术的必要性,权衡性能收益和开发成本。

司徒鸿的博客 1892

calibre:将calibre 的layer number 转换为实际的laymer 名称(7)

可以使用与版图数据库配套的(Standard Verification Rule Format,标准验证规则格式),在 Calibre DESIGNrev 中加载图层名称。

u013620135的博客 984

操纵java数组[转]

如果你做过很多java程序,你可能对java集合类很熟悉,例如Vector和ArrayList。你可以创建一个集合并向其中增加元素:    List lst = new ArrayList();    lst.add(new Integer(37));在这个特殊的范例中,一个整型值37用于构造一个Integer封装类对象,然后那个对象被加入到列表。这个简单的范例展示集合的一个基础-他们用于操纵一列

迷失在爪哇世界中的专栏 1311

使用 Simulink 进行电力电子系统的大信号模型仿真

电力电子系统(Power Electronics System)包括各种功率转换器(如 DC-DC 转换器、逆变器等)。这些设备中的关键组件(如 MOSFET、IGBT、电容器、电感器等)不仅影响系统的性能,还直接关系到系统的稳定性、效率和可靠性。因此,在设计阶段进行详细的建模和仿真至关重要。大信号模型仿真的目的是通过模拟系统在非线性条件下的真实行为,评估其瞬态响应、稳态性能以及对不同负载和输入电压变化的响应。通过本教程,我们介绍了如何使用 Simulink 进行电力电子系统的大信号模型仿真。背景介绍。

xiaoheshang_123的博客 305

ZeroClaw安装、使用方法详细全解

ZeroClaw 是一个用 Rust 编写的轻量级、高性能、完全自主的 AI 助手运行时框架

洛星核的博客 618

Java字节码操纵框架ASM小试

Java字节码操纵框架ASM 本文主要内容:ASM是什么 JVM指令Java字节码文件ASM编程模型ASM示例参考资料汇总JVM详细指令 ASM是什么 ASM是一个Java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM可以直接产生二进制class文件,也可以在类被加载入Java虚拟机之前动态改变类行为。Java class被存储在严格格式定义的.class文件里,这些类...

summer85的博客 297

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java android 数组_Android开发基础之Java 数组

Java 数组数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。Java 语言中提供的数组是用来存储固定大小的同类型元素。你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,....,number99。本教程将为大家介绍 Java 数组的声明、创建和初始化,并给出其对应的代码。声明数组变...

weixin_30240263的博客 628

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

操纵java数组[珍藏]

该文具备收藏价值,正好给初学者用。转自:http://www.javaresearch.org/article/showarticle.jsp?column=1&thread=2994如果你做过很多java程序,你可能对java集合类很熟悉,例如Vector和ArrayList。你可以创建一个集合并向其中增加元素:    List lst = new ArrayList()

wobluesky的专栏 666

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java 基础——数组解析

数组对于每一门编辑应语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。        Java语言中提供的数组是用来存储固定大小的同类型元素。 可以声明一个数组变量,如numbers[100]来代替直接声明100个独立变量number0,number1,....,number99。 下面介绍Java数组的声明、创建和初始化,并给出其对应的代码: 1、声明数组变

知秋一叶 6636
上一篇: 学习Java的30个基本概念-Java基础-Java-编程开发
下一篇: 用Java实现FTP服务器-Java基础-Java-编程开发
java169
博客等级 码龄18年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值