栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java方法:在给定已知属性值的数组列表中查找对象

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java方法:在给定已知属性值的数组列表中查找对象

A

while
适用于后面的表达式或块
while

您没有障碍,所以您的while以表达式结尾

dog=al.get(i);

while(dog.getId()!=id && i<length)     dog=al.get(i);

此后的一切仅发生一次。

没有理由要换一只狗,因为您永远不会使用自己换来的狗。您立即将阵列中的Dog分配给您的Dog引用。

而且,如果您需要获取键的值,则应使用Map而不是Array。

编辑:这是为什么?

OP的评论:

关于不必重新制作Dog的另一个问题。如果我只是从数组列表中取出对象的副本,那么又如何在没有放置对象的情况下将其从数组列表中取出呢?我也注意到我没有把while循环括起来。

Java引用和它引用的对象是不同的东西。它们非常像C 引用和对象,尽管Java引用可以像C 指针一样重新指向。

最终的结果是,

Dog dog;
或者
Dog dog = null
给您提供了指向任何对象的参考。
new Dog()
创建 一个可以指向的对象。

在此之后,

dog =al.get(i)
意味着引用现在指向由返回的狗引用
al.get(i)
。请理解,在Java中,从不返回对象,而仅返回对对象的引用(这是对象在内存中的地址)。

现在,您新建立的Dog的指针/引用/地址已丢失,因为没有代码引用它,因为该引用对象已替换为您从那里获得的引用对象

al.get()
。最终,Java垃圾收集器将销毁该对象。在C
++中,您将“泄漏”内存。

结果是您确实需要创建一个可以引用Dog的变量。您无需使用来创建Dog

new

(实际上,您不需要创建引用,因为您真正应该做的就是返回Map从其get()函数返回的内容。如果未在Dog上对Map参数化,例如:

Map<Dog>
,那么您您将需要强制转换get的返回值,但您将不需要引用:
return(Dog) map.get(id);
或者如果Map被参数化了,
returnmap.get(id)
那一行就是您的整个函数,并且在大多数情况下,它比迭代数组要快。 )



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/569974.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号