- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试实现一个个人的abstractMap。我的项目中有两种类型的 map ,一种 <String , List<Box>>
和一个<String , Box>
(盒子是一个类,用于将元素及其数量封装起来)。但是当我尝试 map 的 put 方法时,它向我显示“UnsupportedOperationException - 如果此 map 不支持 put 操作”
这是 map 的抽象类
public abstract class TamagotchiMap<X> extends AbstractMap<String, X> {
@Override
public abstract Set<Entry<String, X>> entrySet();
public abstract void attachCategories(Set<String> categories);
public abstract void addItemForCategory(String category, Box box);
public abstract String getCategory(Box box);
public Collection<String> getAllCategories() {
return this.keySet();
}
}
还有两个类扩展了这个类
1)
public class InventoryMainMap extends TamagotchiMap<Box> {
private final Set<Entry<String, Box>> entry = new HashSet<>();
@Override
public Set<Entry<String, Box>> entrySet() {
return entry;
}
@Override
public void attachCategories(final Set<String> categories) {
for (String category: categories) {
this.put(category, null);
}
}
/**
*
* @return main item for this category
* @param category is the category of item
*/
public Box getMainItem(final String category) {
return this.get(category);
}
@Override
public String getCategory(final Box box) {
for (String category: this.getAllCategories()) {
if (this.get(category).containsItem(box.getItem())) {
return category;
}
}
return null;
}
@Override
public void addItemForCategory(final String category, final Box box) {
if (this.containsKey(category)) {
this.replace(category, box);
}
}
}
2)
public class ItemContainerMap extends TamagotchiMap<List<Box>> {
private final Set<Entry<String, List<Box>>> entry = new HashSet<>();
@Override
public Set<Entry<String, List<Box>>> entrySet() {
return entry;
}
@Override
public String getCategory(final Box box) {
for (String category: this.getAllCategories()) {
for (Box boxIterator: this.get(category)) {
if (boxIterator.containsItem(box.getItem())) {
return category;
}
}
}
return null;
}
@Override
public void addItemForCategory(final String category, final Box box) {
if (this.containsKey(category)) {
if (!this.get(category).contains(box)) {
System.out.println("nuovo item");
this.get(category).add(box);
} else {
System.out.println("item esistente");
this.get(category).stream().filter(iterBox -> iterBox.equals(box)).forEach(iterBox -> iterBox.increaseQuantity());
}
} else {
throw new NoSuchElementException();
}
}
@Override
public void attachCategories(final Set<String> categories) {
for (String category: categories) {
this.put(category, new LinkedList<Box>());
}
}
}
当我这样做的时候
class Test {
TamagotchiMap map = new ItemContainerMap();
map.put(string, box);
}
它让我看到了我已经说过的异常。好像看跌期权无法使用,你知道我错在哪里吗?
最佳答案
抛出 UnsupportedOperationException
是从 AbstractMap
继承的 put(K, V)
的默认实现。您可以自己实现它,或者让您的 TamagotchiMap
扩展一个具体的 Map
类,例如 HashMap
而不是 AbstractMap
。
关于java - 扩展 AbstractMap 让我看到 put 方法的 UnsupportedOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47622882/
在 Java 中细读 AbstractMap 的源代码时,我遇到了这个: 440 /** 441 * Returns the hash code value for this m
如何 AbstractMap.SimpleEntry 同时 1) 可变(它的方法 setValue( )改变条目的值部分) 2) 有 equals()/hashCode()定义包括条目的值部分 3)
我在运行: OS X v10.8.4 eclipse 3.7.2 Java 1.6 Android minSdkVersion 17 Android targetSdkVersion 17 但是没有骰
Map结构图 Map public interface Map 1、 将键映射到值的对象一个映射不能包含重复的键;每个键最多只能映射到一个值; 2、 此接口取代Dictionary
containsValue() 在 AbstractMap 类中实现如下: public boolean containsValue(Object value) { Iterator> i =
给定, public class XHashMap extends AbstractMap implements Map { //impl } 我想要子类化 XHashMap 并让它继承的 Simp
在编写我自己的自定义 MultiHashMap、multiTreeMap 等类时(是的,我知道这些在 Guava 库中可用,但我需要提供一些不同的功能,所以我完全从头开始重写这些)我遇到需要编写一个
我正在尝试实现一个个人的abstractMap。我的项目中有两种类型的 map ,一种 >和一个 (盒子是一个类,用于将元素及其数量封装起来)。但是当我尝试 map 的 put 方法时,它向我显示“U
我需要创建一个公开 IDictionary 的对象界面,但我不想填写整个界面实现。 拥有与 Java 的 AbstractDictionary 等效的东西会很好,它让您几乎没有什么可以插入完整的字典(
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Java.util.HashMap — why HashMap extends AbstractMap an
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Java.util.HashMap — why HashMap extends AbstractMap an
现在,我正在使用 Guava 系列,一切都很好,很高兴。但是,我想了解为什么我自己的代码不起作用。我想我正在尝试做不可能的事情: 我创建了一个 SortedSet>数据结构。错误是我有时会在集合中得到
这个问题在这里已经有了答案: Why do many Collection classes in Java extend the abstract class and implement the i
我是一名优秀的程序员,十分优秀!