从Java中的Stack中删除重复值

时间:2013-06-23 13:42:28

标签: arrays list iterator stack duplicates

我创建了一个删除堆栈中任何副本的方法,并返回按升序排序的结果堆栈。例如,查看main函数,它应该输出为1,3,4,7。但是它输出原始堆栈数据,这是不正确的。有什么建议吗?

import java.util.ListIterator;
import java.util.Stack;

public class removeDoubleInStack {
    public static Stack<Integer> removeDouble(Stack<Integer> s) {
        Stack<Integer> tempStack = new Stack<Integer>();

        ListIterator<Integer> iter = s.listIterator();
        while(iter.hasNext()) {
            int tempNext = iter.next();
            if(tempNext != iter.next())
                tempStack.add(tempNext);        
        }
        return tempStack;
    }

    public static void main(String[] args) {
        Stack<Integer> s = new Stack<Integer>();
        s.add(1);
        s.add(3);
        s.add(3);
        s.add(4);
        s.add(7);
        s.add(7);

        removeDouble(s);
        System.out.println(s);
    }
}

2 个答案:

答案 0 :(得分:1)

System.out.println仅打印之前初始化的对象。除非您创建Stack的新对象或重新初始化...

,否则removeDouble(s)没有任何影响
  

public static void main(String [] args){

   Stack<Integer> s = new Stack<Integer>();
   s.add(1);
   s.add(3);
   s.add(3);
   s.add(4);
   s.add(7);
   s.add(7);

   Stack<Integer> tempStack = removeDouble(s); // create new object
   System.out.println(tempStack);
     

}

答案 1 :(得分:1)

正如您在Doc中所看到的,没有类似于删除重复的内容

https://docs.oracle.com/javase/6/docs/api/java/util/Stack.html

但您可以在以下时间执行此操作:

1-获取堆栈元素作为枚举

2转枚举到列表

3-添加列表以设置

4-清除堆栈

5- add set to stack

实施例

// Sass code
.disabled-cell
  background-color: gray
  opacity: 1
  &:hover
    cursor: not-allowed

.fc-view
  td
    cursor: pointer