我必须完成一个奇怪的特殊情况。其描述如下:
我必须设计一个地图,其中“ 键 ”始终为 字符串 类型。但是,其中一个键的“ 值 ”可以是 字符串或列表
(取决于特定键可以具有的值数。如果该特定键只有一个值,并且必须如果键包含许多值,则为列表)。如何完成这种情况?
例如:在映射中有2个键,分别是“名称”和“电话号码”。一个人只能有一个名字和多个电话号码。因此,此处的第一个键(即“名称”)的值应为“字符串”类型,而对于第二个键(即“电话号码”)的值应为“列表”类型。如何声明这样的地图。可能吗?
可以做类似的事情Map<String, Object>
。
但是 :我强烈建议您考虑一下您的设计。您应该为自己的人员使用一个类。这样,您就可以做到:Map<String, Person>
拥有Person
用于名称,电话号码和其他信息的获取器和设置器。
示例Person
类:
public class Person {
private String name;
private List<String> phoneNumbers = Collections.emptyList();
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setPhoneNumbers(List<String> phoneNumbers) {
this.phoneNumbers = phoneNumbers;
}
public void addPhoneNumber(String number) {
phoneNumbers.add(number);
}
public List<String> getPhoneNumbers() {
return phoneNumbers;
}
}
我有这个json字符串: 当我用Jackson将其转换为映射[字符串,对象]时,开始日期的类型是字符串,我如何告诉Jackson将其转换为日期时间类型?
问题内容: 我可以用来存储多种不同类型的数据(整数/字符串/等)?我来自PHP背景,可以将不同类型的数据存储到数组中,但是我不知道如何在Java中进行操作。 举个例子: 如何用Java做类似的事情? 问题答案: Java是一种强类型语言。在PHP或Javascript中,变量没有严格的类型。但是,在Java中,每个对象和基元都有严格的类型。您可以将多种类型的数据存储在Array中,但只能将其作为对
问题内容: 基本上,我所做的是为州写一个枚举,我不仅希望能够像州一样访问它们,而且还希望访问它们的缩写以及它们是否是原始殖民地。 这似乎按我预期的那样工作。我可以 对于涉及枚举的特定情况,这是执行此操作的最佳方法,还是设置和格式化此枚举的更好方法?预先感谢所有人! 问题答案: 首先,枚举方法不应大写。它们是与其他方法一样的方法,具有相同的命名约定。 其次,您所做的并不是建立枚举的最佳方法。不要为每
问题内容: 我有项目清单。一个项目可以是很多东西,比如说列表是这样的: 现在,我想使用ngRepeat指令渲染列表,该指令将根据对象的类型使用模板(多态渲染)。可以做到吗? 可能类似( ng-use 是一个 假设 指令): 问题答案: API参考:http://docs.angularjs.org/api/ng.directive: ngSwitch
在java 8中创建新代码后,我想清除声纳问题。 我的代码: 声纳说: Lambda应该替换为方法引用。方法/构造函数引用比使用lambda更紧凑和可读性,因此是首选。同样,空检查可以替换为对Object::isNull和Object::nonNull方法的引用。 我想要更改映射(arg-
问题内容: 我有〜10种不同的文档类型,它们共享10-15个通用字段。但是每种文档类型都有其他字段,其中3个字段最多可以有30-40个其他字段。 我正在考虑为每种文档类型使用不同的映射类型。但是,如果我正确理解了映射的工作方式,ElasticSearch将在内部使用一个包含150-200个字段的映射。因为没有文档对每个字段都有值,所以我最终会得到很多稀疏数据。 根据本文(索引与类型),Elasti