我有两个堆栈:
public static Stack<String> listOfObjects = new Stack<String>();
public static Stack<Integer> objectCounts = new Stack<Integer>();
堆栈listOfObjects
包含以下内容:
- 椅子
- 表格
- 沙发
- ...
堆栈objectCounts
包含堆栈中相同对应位置的这些变量的计数
- 4
- 1
- 3
- ...
如果我想按堆栈 objectCounts
中的计数对两个堆栈进行排序,对堆栈进行排序的最快方法是什么?
非常感谢!
最佳答案
我会创建一个Pair
对象来保存String
名称和Integer
计数。
private static final class Pair<K, V> {
private final K key;
private final V value;
private Pair(final K key, final V value) {
this.key = key;
this.value = value;
}
@Override
public String toString() {
return "P: " + key + ", " + value;
}
}
public static void main(final String[] args) {
final Stack<Pair<String, Integer>> stack = new Stack<>();
stack.add(new Pair<String, Integer>("Chair", 2));
stack.add(new Pair<String, Integer>("Table", 2));
stack.add(new Pair<String, Integer>("Bed", 44));
Collections.sort(stack, new Comparator<Pair<String, Integer>>() {
@Override
public int compare(final Pair<String, Integer> o1, final Pair<String, Integer> o2) {
return o2.value.compareTo(o1.value);
}
});
System.out.println(stack);
}
返回结果:
[P: Bed, 44, P: Chair, 2, P: Table, 2]
您可以迭代您的Stack
来创建一个成对的集合,以便轻松排序:
final Stack<Pair<String, Integer>> stack = new Stack<>();
for (int i = 0; i < stringStack.size(); i++) {
stack.push(new Pair<String, Integer>(stringStack.get(0), countStack.get(0));
}
关于java - 在 Java 中对堆栈中的值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21437806/