从列表中获取连续的对
Getting Consecutive Pairs from a List
我正在重构一些代码,其中一部分看起来像这样 -
public void addElementPairsToConfig(final Config config, final Element element1, final Element element2, final Element...elements) throws Exception {
config.addDependency(element1, element2);
Element currentElement = element2;
for (int i = 0; i < elements.length; i++) {
config.addDependency(currentElement, elements[i]);
currentElement = elements[i];
}
}
这是我认为实际应该看起来的样子 -
public void addElementPairsToConfig(final Config config, final Element...elements) throws Exception {
for (Pair<Element, Element> pair : elements.getNextPair()) {
config.addDependency(pair.getFirst(), pair.getLast());
}
}
我知道 Apache Commons
有一个 Pair
class,我会使用它,但找不到执行此操作的 List util 方法,是否存在。我不介意自己写一个,但我不想重新发明轮子并使用 Apache Commons
或 Guava
中的东西,如果它存在的话。
在 ruby 世界中,我会使用类似 slice 的东西。
您对方法签名的更改非常好。但是,您对方法实现的想法是过度设计的。我建议保持简单:
public void addElementPairsToConfig(final Config config, final Element...elements) throws Exception {
for (int i = 1; i < elements.length; i++) {
config.addDependency(elements[i-1], elements[i]);
}
}
我正在重构一些代码,其中一部分看起来像这样 -
public void addElementPairsToConfig(final Config config, final Element element1, final Element element2, final Element...elements) throws Exception {
config.addDependency(element1, element2);
Element currentElement = element2;
for (int i = 0; i < elements.length; i++) {
config.addDependency(currentElement, elements[i]);
currentElement = elements[i];
}
}
这是我认为实际应该看起来的样子 -
public void addElementPairsToConfig(final Config config, final Element...elements) throws Exception {
for (Pair<Element, Element> pair : elements.getNextPair()) {
config.addDependency(pair.getFirst(), pair.getLast());
}
}
我知道 Apache Commons
有一个 Pair
class,我会使用它,但找不到执行此操作的 List util 方法,是否存在。我不介意自己写一个,但我不想重新发明轮子并使用 Apache Commons
或 Guava
中的东西,如果它存在的话。
在 ruby 世界中,我会使用类似 slice 的东西。
您对方法签名的更改非常好。但是,您对方法实现的想法是过度设计的。我建议保持简单:
public void addElementPairsToConfig(final Config config, final Element...elements) throws Exception {
for (int i = 1; i < elements.length; i++) {
config.addDependency(elements[i-1], elements[i]);
}
}