Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从条目的属性映射到条目的属性_Java_Map - Fatal编程技术网

Java 从条目的属性映射到条目的属性

Java 从条目的属性映射到条目的属性,java,map,Java,Map,我经常看到java中包含bean的对象列表,这些bean的对象是通过检查ID字段来拾取的,例如 List<BeanObj> list = … BeanObj myObj = null; for(BeanObj b : list) if(b.getId().equals(whatIAmLookingFor)){ myObj = b; break; } 甚至 SpecialMap<String, BeanObj>("getR

我经常看到java中包含bean的对象列表,这些bean的对象是通过检查ID字段来拾取的,例如

List<BeanObj> list = …

BeanObj myObj = null;
for(BeanObj b : list)
    if(b.getId().equals(whatIAmLookingFor)){
        myObj = b;
        break;
    }
甚至

SpecialMap<String, BeanObj>("getRoot().getAttribute({0})", "id")
                          // use String getAttribute("id") on result of getRoot()
SpecialMap(“getRoot().getAttribute({0})”,“id”)
//对getRoot()的结果使用字符串getAttribute(“id”)
使用add()代替put(),它使用id getter函数来构建其内部映射?此映射可能需要映射对象实现一些接口,以允许在id字段上通知映射更新


也许地图还可以注意,将对象的ID更改为现有对象的ID是不可能的,或者会导致删除以前具有该ID的对象。

您可以使用guava实用程序管理向地图添加元素的功能方面:

import com.google.common.base.Function;

public class SpecialMap<K, V> extends HashMap<K, V>{
    private Function<V, K> function;

    public SpecialMap(Function<V, K> function) {
        this.function = function;
    }

    public void add(V value) {
        K key = function.apply(value);
        this.put(key, value);
    }

    public static void main(String[] args) {
        SpecialMap<String, BeanObj> specialMap = new SpecialMap<String, BeanObj>(new Function<BeanObj, String>() {
            @Override
            public String apply(BeanObj arg) {
                return arg.getRoot().getAttribute("id");
            }
        });
        specialMap.add(new BeanObj());
    }
}
import com.google.common.base.Function;
公共类SpecialMap扩展HashMap{
私人职能;
公共专用地图(功能){
这个函数=函数;
}
公共无效添加(V值){
K键=函数。应用(值);
这个.put(键、值);
}
公共静态void main(字符串[]args){
SpecialMap SpecialMap=新的SpecialMap(新函数(){
@凌驾
公共字符串应用(BeanObj arg){
返回arg.getRoot().getAttribute(“id”);
}
});
specialMap.add(新BeanObj());
}
}
在本例中,函数将把bean类型映射到字符串键

import com.google.common.base.Function;

public class SpecialMap<K, V> extends HashMap<K, V>{
    private Function<V, K> function;

    public SpecialMap(Function<V, K> function) {
        this.function = function;
    }

    public void add(V value) {
        K key = function.apply(value);
        this.put(key, value);
    }

    public static void main(String[] args) {
        SpecialMap<String, BeanObj> specialMap = new SpecialMap<String, BeanObj>(new Function<BeanObj, String>() {
            @Override
            public String apply(BeanObj arg) {
                return arg.getRoot().getAttribute("id");
            }
        });
        specialMap.add(new BeanObj());
    }
}