java - 在 Java 中对堆栈中的值进行排序

标签 java

我有两个堆栈:

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/

相关文章:

java - Ant Ivy : How to retrieve source code for all levels of dependencies?

java - jqplot条形图的多维数组

java - 使用 LayoutParam 在 android Fragment 中动态设置 ImageView 的高度和宽度

java - 丰富的 :autocomplete ‘label’ and ‘value’ of suggestion list?

java - ObjectBox:获取具有特定关系的对象

java - 可运行的 jar 不执行任何操作,资源未导出

java - 如何使用 Java + ChromeDriver 在 AWS Lambda 中运行 Google Chrome 以进行 Selenium 测试

java - 无法迭代 HttpHeaders Map

java - 如何在 Clojure 中实现全包随机数函数?

Java HashMap 查找在相同的键上失败