HashMap<LocalDate, String>
我有一个包含字符串的ListView(例如:“2014-05-10 example”),我想用
删除所选的hashmaphashmap.remove(LocalDate key, String value)
但我不确定如何从字符串
获取密钥和值我的对象来自名为“Inv”的类:
public class Inv {
private String name;
private String category;
private LocalDate date;
private Double price;
private String info;
private HashMap<LocalDate, String> mapMain;
上下文:来自“Inv”类的对象是您购买的东西,例如汽车,而散列图包含已经对汽车进行的所有维护。
你可以帮忙吗?答案 0 :(得分:0)
没有通用解决方案&#34;我如何从字符串&#34;中获取密钥和值。
这取决于你是否可以:
请注意,您需要能够构造一个对原始密钥equal
的对象。如果你不能,那么问题就无法解决。
在您的情况下,如果我们可以假设日期字符串将始终采用该格式,那么@ Andreas的解决方案应该有效:
hashmap.remove(LocalDate.parse(text.split(" ")[0]))
但这是一个反例:
HashMap<String, String>
和这样的条目:
"key example string"
"key 2 another example"
现在我们无法确定密钥的终点和值的开始位置。 (&#34; 2&#34;键或值的一部分?&#34;示例&#34;?)
答案 1 :(得分:0)
我的建议:不要将ListView
包含键值对用作项而不是String
,并使用自定义ListCell
来正确显示它们。
示例:强>
Map<LocalDate, String> data = ...
ListView<Map.Entry<LocalDate, String>> listView = new ListView<>();
listView.getItems().addAll(data.entrySet());
listView.setCellFactory(l -> new ListCell<Map.Entry<LocalDate, String>>() {
@Override
protected void updateItem(Map.Entry<LocalDate, String> item, boolean empty) {
super.updateItem(item, empty);
setText((empty || item == null) ? "" : item.getKey() + " " + item.getValue());
}
});
在这种情况下,您可以删除所选条目:
int index = listView.getSelectionModel().getSelectedIndex();
if (index >= 0) { // check, if selection exists
Map.Entry<LocalDate, String> entry = listView.getItems().remove(index);
// data.remove(entry.getKey(), entry.getValue());
data.remove(entry.getKey());
}