java泛型 算法_非常具体的Java泛型问题 – 如何返回传递给方法的相同类型?
在我的游戏引擎中,我有一个实体对象列表,其中有许多子类(例如播放器,立方体,相机等).我想有一个方法,我传递一个Class对象,最后得到一个相同类的List – 例如我想说这样的话:
List boxes = getEntities(Box.class);
到目前为止我有这个:
public List getEntities(Class extends Entity> t) {
ArrayList list = new ArrayList<>();
for (Entity e : entities) {
if (e.getClass() == t) {
list.add(e);
}
}
return Collections.unmodifiableList(list);
}
但是当然返回实体列表,这意味着列表中的每个实例都必须转换为Box类.有没有办法在Java中正确地做到这一点?
最佳答案 我推荐以下内容,它建立在现有答案的基础上,但避免使用@SuppressWarnings等:
public List getEntities(Class type) {
List list = new ArrayList<>();
for (Entity e : entities) {
if (type.isInstance(e)) {
list.add(type.cast(e));
}
}
return Collections.unmodifiableList(list);
}
或者,如果您使用的是Guava:
public ImmutableList getEntities(Class type) {
return ImmutableList.copyOf(Iterables.filter(entities, type));
}
java泛型 算法_非常具体的Java泛型问题 – 如何返回传递给方法的相同类型?相关推荐
- java python算法_用Python,Java和C ++示例解释的排序算法
java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...
- java数据挖掘算法_[转载]干货,基于Java和C++的数据挖掘Apriori算法实现
Apriori算法实现 Apriori算法的思想还是很容易理解的,实现起来虽然麻烦,但是还是比较容易的.下面是我使用Java语言实现的Apriori算法,实现了AprioriAlgorithm 类,包 ...
- java常用算法_五分钟记住Java常用的八种排序算法与代码实现
1.直接插入排序 经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中. 将第一个数和第二个数排序,然后构成一个有序序列 将第三个数插入进去,构成一个新的有序序列. 对第四个数.第五个数--直 ...
- java 线性回归算法_线性搜索或顺序搜索算法在Java中如何工作? 示例教程
java 线性回归算法 大家好,之前,我讨论了二进制搜索算法的工作原理,并分享了在Java中实现二进制搜索的代码. 在那篇文章中,有人问我是否还有其他搜索算法? 如果数组中的元素未排序,又该如何使用它 ...
- 鲸鱼优化算法_盘点 35 个 Java 代码优化细节
代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是, ...
- java python算法_用Java,Python和C ++示例解释的搜索算法
java python算法 什么是搜索算法? (What is a Search Algorithm?) This kind of algorithm looks at the problem of ...
- java清理垃圾_垃圾清理势在必行——Java垃圾收集算法
一起学习 1.垃圾收集算法的核心思想 Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象.该机制可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发 ...
- java回溯算法_回溯算法讲解--适用于leetcode绝大多数回溯题目
什么是回溯算法? 回溯法是一种系统搜索问题解空间的方法.为了实现回溯,需要给问题定义一个解空间. 说到底它是一种搜索算法.只是这里的搜索是在一个叫做解空间的地方搜索. 而往往所谓的dfs,bfs都是在 ...
- java轮训算法_负载均衡算法WeightedRoundRobin(加权轮询)简介及算法实现
Nginx的负载均衡默认算法是加权轮询算法,本文简单介绍算法的逻辑,并给出算法的Java实现版本. 算法简介 有三个节点{a, b, c},他们的权重分别是{a=5, b=1, c=1}.发送7次请求 ...
最新文章
- 公司用的 MySQL 团队开发规范
- karyoploteR: 基因组数据可视化 R 包
- Java8之lambda表达式的总结
- java 加载中_Java 6类加载中更快的是什么?
- 【机器学习】深刻理解决策树-动手计算ID3算法
- 如何使用Action.Invoke()触发一个Storyboard
- mysql 存储过程写入文件
- Visio—如何导出文件为图片?
- svm python 多分类_机器学习之SVM多分类
- 通过企业微信服务端API接口进行群发应用消息
- 关于6月20日PMP认证考试准考信下载及考场规定的通知
- 用cocos studio生成plist文件
- 0基础学软件测试好学吗?这2个硬性要求没有达到的话奉劝你不要学...
- python中button对象的方法_Python cmds.shelfButton方法代码示例
- 西门子在华启动“零碳先锋计划”;希尔顿欢朋在华项目签约数突破600 | 美通社头条...
- 邮箱smtp服务器及端口收集
- 清理服务器多余的图片(文件、数据)
- MyEcplise_Maven搭建SSM框架
- 论文阅读 || 目标检测系列 —— RCNN详解
- 外媒评出全球32家AI独角兽公司:中国占10家
热门文章
- C# Winform 出现异常:无法将顶级控件添加到控件,解决方案如下:
- AFN框架和SDWebImage框架的上手体验
- 数据库mysql表怎么设置外键_如何设置数据库中的外键
- Android开发之Glide设置View背景图的方法
- 从集合中查找最值得方法——max(),min(),nlargest(),nsmallest()
- IP地址与无符号整数值相互转换
- Python 通过 pip 安装第三方模块成功,导入该模块失败的解决方法
- MySQL数据库权限管理
- bootstrap 查缺补漏
- find命令--Linux命令应用大词典729个命令解读