操纵java数组
如果你做过很多java程序,你可能对java集合类很熟悉,例如Vector和ArrayList。你可以创建一个集合并向其中增加元素: 摘自:http://www.javaresearch.org/article/showarticle.jsp?column=1&thread=2994
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 new
vec[] = 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();
相关推荐
JAV.zip_jaV.H0D_jav.com_jav513_javjobvideo日韩_vjav
yrtos_ MULTITASKING RTOS,.
反射、xml解析
反射: 反射就读取class文件,获取该文件中的属性、方法等, 作用:用来获取指定路径下的class文件中所具备的的所有属性和方法。 //返回Class对象的方式之一:getClass(); //每一个引用数据类型都有一个getClass的方法,返回的是该类的Class对象 public static void reflex() { User user = new User(); Class cls = user.getClass(); Class cls2 = user.getClass()
别再只用LSTM了!用Temporal Fusion Transformer (TFT) 搞定多变量时序预测,附PyTorch实战代码
本文介绍了Temporal Fusion Transformer (TFT) 在多变量时序预测中的优势,并提供了PyTorch实战代码。TFT通过三重注意力机制解决了LSTM在特征交互、静态特征处理和解释性方面的不足,显著提升了预测精度和可解释性。文章详细讲解了TFT的核心组件构建、数据预处理、模型训练技巧及可解释性分析,帮助开发者快速掌握这一先进时序预测技术。
欢迎光临 Javen-Studio 新网址:http://javenstudio.org
欢迎光临 Javen-Studio 新网址:http://javenstudio.org
Shopee滑块验证码太刁钻?手把手教你用Python+Playwright绕过弧形验证(附影刀RPA接入代码)
本文详细介绍了如何使用Python和Playwright结合SadCaptcha第三方服务高效破解Shopee平台的弧形滑块验证码,并集成到影刀RPA工作流中。该方案开发周期短、准确率高(>90%),特别适合跨境电商自动化操作,已在实际项目中验证成功。
在实战中学AI-车流量统计项目-YOLOV11车辆检测-YOLOV11模型的部署
考虑实际落地中部署推理资源消耗,速度与模型精度之间的均衡,同时,车辆属于比较通用场景的目标检测,我们将YOLOV11作为最终的模型选择,目前官方开源的模型基于coco数据集训练,里面已经包含了车辆相关类别,经测试,在监控视角下效果基本可用,所以,在落地过程中,我们先用这个模型来打通部署链路,后面再逐步优化模型性能。在Nvidia的硬件下做部署,部署框架优先选择官方框架TensorRT,下面重点讲述如何用TensorRT部署YOLOV11模型。
java byte数组 偏移_实例解析Java byte数组操纵方式代码
实例解析Java byte数组操纵方式代码字节数组的关键在于它为存储在该部分内存中的每个8位值提供索引(快速),精确的原始访问,并且您可以对这些字节进行操作以控制每个位。 坏处是计算机只将每个条目视为一个独立的8位数 - 这可能是你的程序正在处理的,或者你可能更喜欢一些强大的数据类型,如跟踪自己的长度和增长的字符串 根据需要,或者一个浮点数,让你存储说3.14而不考虑按位表示。 作为数据类型,在长...
黑马程序员Pink的javaScript课程APIday4
本文摘要:介绍了JavaScript中日期对象的实例化方法(有参/无参)及三种获取时间戳的方式。讲解了DOM节点操作,包括节点查找(父、子、兄弟节点)、增加/克隆/删除节点的方法。详细说明了移动端touch事件和Swiper插件的使用,包括自动播放和小圆点配置。最后提及学成在线案例中表单验证和取消默认跳转的实现。
操纵java数组[转]
如果你做过很多java程序,你可能对java集合类很熟悉,例如Vector和ArrayList。你可以创建一个集合并向其中增加元素: List lst = new ArrayList(); lst.add(new Integer(37));在这个特殊的范例中,一个整型值37用于构造一个Integer封装类对象,然后那个对象被加入到列表。这个简单的范例展示集合的一个基础-他们用于操纵一列
从零构建:四轴机械臂D-H参数建模与MATLAB实战指南
本文详细介绍了四轴机械臂D-H参数建模的完整流程与MATLAB实战应用。从机械臂运动学基础出发,解析D-H参数原理与坐标系建立规则,提供MATLAB Robotics Toolbox的安装、模型创建及正逆运动学求解的代码实现。特别针对四轴机械臂的逆运算优化、轨迹规划和奇异位形规避等高级应用给出实用解决方案,是机器人开发者的实战指南。
声品质粗糙度matlab,声品质的应用分析方法
声品质的应用分析方法2016-04-05 09:18:57阅读次数:14198摘要:声品质分析在噪声的主观评价方面已经得到越来越多的应用。本文比较了声品质分析与传统计权声级的区别,并介绍了在声品质分析的实际应用中,针对稳态信号、非稳态信号的几种不同分析方法,以及各分析方法的要求和特点。关键词:声品质,响度,尖锐度,粗糙度,波动度1前言传统评价噪声的方法主要为计权声压级,用以反映声音的大小。但是人耳...
操纵java数组[珍藏]
该文具备收藏价值,正好给初学者用。转自:http://www.javaresearch.org/article/showarticle.jsp?column=1&thread=2994如果你做过很多java程序,你可能对java集合类很熟悉,例如Vector和ArrayList。你可以创建一个集合并向其中增加元素: List lst = new ArrayList()
SigmaStudio进阶技巧:如何用ADAU1701实现60段EQ与防啸叫算法
本文深入探讨了如何在ADAU1701 DSP芯片上实现专业级音频处理系统。通过精密的资源规划与架构设计,详细讲解了构建高达60段参数均衡器(EQ)的有效方法,并集成了移频与自适应陷波双策略的智能防啸叫算法。内容涵盖从SigmaStudio工程优化、算法模块组合到系统联调实战的全流程,旨在帮助中高级开发者充分利用ADAU1701性能,打造稳定、高效的音频处理解决方案。
初学者入门:如何随心所欲操纵java数组
如果你做过很多java程序,你可能对java集合类很熟悉,例如Vector和ArrayList。你可以创建一个集合并向其中增加元素: List lst = new ArrayList(); lst.add(new Integer(37)); 在这个特殊的范例中,一个整型值37用于
Spring AI Alibaba实战训练营-20 基于注解驱动的MCP快速开发入门指南
本文详细讲解如何使用SpringAiAlibaba快速开发基于注解驱动的MCP应用。文章详细介绍了MCP协议并且重点介绍了Spring AI通过注解驱动的开发方式简化MCP服务开发。具体包括服务端和客户端的注解使用、城市最新时间查询MCP项目结构概览(服务端和客户端模块)以及环境配置要求。
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
操纵Java数组
如果你做过很多java程序,你可能对java集合类很熟悉,例如Vector和ArrayList。你可以创建一个集合并向其中增加元素: List lst = new ArrayList(); lst.add(new Integer(37)); 在这个特殊的范例中,一个整型值37用于构造一个Integer封装类对象,然后那个对象被加入到列表。这个简单的范例展示集合的一
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
Java官方操纵byte数组的方式
java官方提供了一种操作字节数组的方法——内存流(字节数组流)ByteArrayInputStream、ByteArrayOutputStream ByteArrayOutputStream——byte数组合并 /** * 将所有的字节数组全部写入内存中,之后将其转化为字节数组 */ public static void main(String[]...
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
591



被折叠的 条评论
为什么被折叠?



