Добавить контейнер WP-CLI в стек LEMP

Дайте каждому объекту Data1 и Data2 ID. Затем вы можете хранить кортежи UniqueData, long, long. Это значительно упрощает последовательное изменение одного и того же объекта.

public class rnd_0001 {

private Map<String, int[]> arg0 = new HashMap<>();
private Map<String, Integer> arg1 = new HashMap<>();
private Map<String, Integer> arg2 = new HashMap<>();

private int lookupArg1(String s){
    if(!arg1.containsKey(s))
        arg1.put(s, arg1.size());
    return arg1.get(s);
}

private int lookupArg2(String s){
    if(!arg2.containsKey(s))
        arg2.put(s, arg2.size());
    return arg2.get(s);
}

public void add(String uniqueData, String arg1, String arg2){
    int arg1ID = lookupArg1(arg1);
    int arg2ID = lookupArg2(arg2);
    arg0.put(uniqueData, new int[]{arg1ID, arg2ID});
}

public void changeArg1(String orig, String replacement){
    if(!arg1.containsKey(orig))
        return;
    if(replacement.equals(orig))
        return;
    arg1.put(replacement, arg1.get(orig));
    arg1.remove(orig);
}

public void changeArg2(String orig, String replacement){
    if(!arg2.containsKey(orig))
        return;
    if(replacement.equals(orig))
        return;
    arg2.put(replacement, arg2.get(orig));
    arg2.remove(orig);
}

private String reverseLookupArg1(int id){
    for(Map.Entry<String, Integer> en : arg1.entrySet())
        if(en.getValue() == id)
            return en.getKey();
    return null;
}

private String reverseLookupArg2(int id){
    for(Map.Entry<String, Integer> en : arg2.entrySet())
        if(en.getValue() == id)
            return en.getKey();
    return null;
}

public void change(String uniqueData, String arg1, String arg2){
    if(!arg0.containsKey(uniqueData))
        return;
    int arg1ID = arg0.get(uniqueData)[0];
    int arg2ID = arg0.get(uniqueData)[1];
    changeArg1(reverseLookupArg1(arg1ID), arg1);
    changeArg2(reverseLookupArg2(arg2ID), arg2);
}

public void output(){
    for(Map.Entry<String, int[]> key : arg0.entrySet()){
        System.out.println(key.getKey() + "\t" + reverseLookupArg1(key.getValue()[0]) + "\t" + reverseLookupArg2(key.getValue()[1]));
    }
}

public static void main(String[] args){
    rnd_0001 datastructure = new rnd_0001();

    datastructure.add("obj1","hello", "world");
    datastructure.add("obj2", "hello", "everyone");
    datastructure.output();
    System.out.println("");

    datastructure.change("obj1", "hell", "world");
    datastructure.output();
}

}

1
задан lowtechsun 19 January 2019 в 14:50
поделиться