gpt4 book ai didi

java - 是否有一个带有索引、键和对象的 Map 对象? java

转载 作者:行者123 更新时间:2023-11-30 06:02:24 26 4
gpt4 key购买 nike

我正在尝试用 Java 模拟恩尼格玛机的转子。我需要一个带有索引、键和对象的对象,因为我没有成功尝试像这样的 HashMap:

private HashMap<Integer,Integer> rotorWiring = new HashMap<Integer, Integer();
private HashMap<Integer,Integer> reverseRotorWiring = new HashMap<Integer, Integer>();

//The "wiring" of the rotor is set from a String,
public void setRotorWiring(String Wiring) {
if (Wiring.length()==26) {
for (int i=0; i<Wiring.length();i++ ) {
char tempChar = Wiring.charAt(i);
int valueOfChar = (int)tempChar-64;
if (valueOfChar<=26){
this.rotorWiring.put(i+1,valueOfChar);
this.reverseRotorWiring.put(valueOfChar,i+1);
}
}
}

}

到目前为止一切顺利,这使我能够翻译 e.x.然而,一旦我尝试像这样模拟转子的转动,就会出现 A 到 E 的情况:

//It should be mentioned that I designing the program to only accept characters a to z inclusive.
public void turn() {
for (int i=1;i<=rotorWiring.size();i++) {
if (i!=26) {
rotorWiring.replace(i, rotorWiring.get(i+1));
}
else {
rotorWiring.replace(i, rotorWiring.get(1));
}
}
for (int i=1;i<=rotorWiring.size();i++) {
if (i!=26) {
reverseRotorWiring.replace(i, rotorWiring.get(i+1));
}
}
}

但是,我注意到这模拟的是转子内部接线的偏移而不是转动...我要求一个带有索引、键和对象的类似“ map ”的解决方案,因为这会让我将所有键和对象的索引偏移 1,从而模拟转弯。

但是,我愿意接受针对此问题的不同解决方案的建议。

应该指出的是,我有点新手,因此很欣赏相当深入的解释。

非常感谢。

最佳答案

欢迎来到 StackOverflow。 JDK 中不存在您所描述的内容的实现。然而,还有更多方法可以实现Integer-String-Object的存储。请注意,根据定义,索引和键都是唯一的。另请注意,索引键是紧密耦合的。您可能想将一个 Map 放置到另一个 Map:

Map<Integer, Map<String, MyObject>> map;

或者使用索引的集合特征:

List<Map<String, MyObject>>

删除会更改所有后续元素索引的项时要小心 - 将其替换为 null 以保留索引。或者,您可以使用索引/键为定义的对象创建装饰器:

Map<Integer, MyDecoratedObject> map;

MyDecolatedObject 看起来像:

public class MyDecoratedObject {

private final String key; // or int index
private final MyObject delegate;

// Full-args constructor, getters
}

最后,您可以选择最能满足您要求的方式。

关于java - 是否有一个带有索引、键和对象的 Map 对象? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52010234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com