java - 唯一多态对象列表
问题描述
我正在尝试验证列表仅包含唯一类型的多态对象。什么是验证这一点的干净方法?
这是一个简单的示例来说明我正在尝试做的事情:
给定一个List<Animal> uniqueAnimals
,
我认为
uniqueAnimals = Arrays.asList(new Dog("Snoopy"), new Cat("Garfield"))
有效并且
uniqueAnimals = Arrays.asList(new Dog("Snoopy"), new Dog("Pluto"), new Cat("Garfield"))
无效
解决方案
You can check if the classes of the objects in the list are unique. Try this.
static boolean isUniquePolymorphicObjects(List<Animal> list) {
return list.stream()
.map(object -> object.getClass())
.distinct().count() == list.size();
}
and
List<Animal> uniqueAnimalsValid = Arrays.asList(new Dog("Snoopy"), new Cat("Garfield"));
System.out.println(isUniquePolymorphicObjects(uniqueAnimalsValid));
List<Animal> uniqueAnimalsInvalid = Arrays.asList(new Dog("Snoopy"), new Dog("Pluto"), new Cat("Garfield"));
System.out.println(isUniquePolymorphicObjects(uniqueAnimalsInvalid));
otuput:
true
false
推荐阅读
- c# - 在 c# 中使用 opengl 流位图数据
- c++ - 返回作为参数传递给函数的右值引用
- sql - 加入三个表,但一个两个具有相同的列
- python-3.x - 使用python在mongodb中唯一插入记录
- amazon-web-services - 扫描 10GB 的大型 Amazon DynamoDB 数据
- python - 如何从列表中访问值并在python中链接两个列表
- android - 图像(子视图)角在线性布局中没有得到圆形
- c - 为什么 groupbox 是 Win32 API 中的按钮?(BS_GROUPBOX)
- java - 使用 Java 在 Azure 事件网格中创建事件处理程序(订阅者)
- windows - 如何在管理员模式下使用要执行的命令运行脚本