初学java,感觉java的数据结构(是叫java集合构架吧)与C++的STL相比,复杂了很多,操作极度不方便,还令人相当费解。下面是我暂时遇到的问题,帮忙解决和解释下!!!!!!
import java.util.*;
public class dataStruck{
public static void main(String[] args){
Stack s = new Stack();?//没有先声明其数据类型,之后怎么处理啊?如下的一个赋值。
                  //好像赋任何类型的值,它都接受。
Queue q = new LinkedList();//如此定义,实在别扭,是因为java没指针,不能像C/C++那样实现吗?

//stack
int n;
s.push(new Integer(1));
s.push(new Integer(3));
s.push(new Integer(4));
for(int i=0; i<s.size(); i++){
      n = s.pop();//为什么不能这样赋值??要达到我的这个目的,该怎么做?
                                      //不可能只用于输出吧,大多数情况总得把它作为中间数据处理啊?
      System.out.print(n + "  ");
}
}
}感觉java与windows一样臃肿。希望回答问题的尽量全面回答我所有的问题!!!

解决方案 »

  1.   

     Stack s = new Stack();?//没有先声明其数据类型,之后怎么处理啊?如下的一个赋值。
    这应该是Java1.4前的使用方式,没有进行类型检查。Java1.5一般使用泛型。
    Queue q = new LinkedList();
    //如此定义,实在别扭,是因为java没指针,不能像C/C++那样实现吗?
    没有什么别扭,对面向对象思想理解深刻了,就会觉得正常。 你的这些问题,说明你对Java学得还很浅
      

  2.   

    Stack s = new Stack();?//没有先声明其数据类型,之后怎么处理啊?如下的一个赋值。
    用泛型:Stack<Integer> s = new Stack<Integer>();
    集合类默认的元素类型是Object,因此,任意的类型都能添加进去。Queue q = new LinkedList();//如此定义,实在别扭,是因为java没指针,不能像C/C++那样实现吗?
    LinkedList实现了Queue接口,就好比父类的引用变量来引用子类的实例一样,java里面提倡面向接口编程,而不是面向实现编程。n = s.pop();
    用泛型以后就没有问题了个人感觉java的集合类不知道有多么方便简单而且功能强大!
      

  3.   

    Stack s = new Stack();?//没有先声明其数据类型,之后怎么处理啊?如下的一个赋值。
    java中有泛型,可以在声明的时候加以限定,不限定的话编译器会给一个警告,
    Stack<object> s = new Stack<object>();
    当然你指定了数据类型后就只能往里面存储对应的实例了
    Queue q = new LinkedList();//如此定义,实在别扭,是因为java没指针,不能像C/C++那样实现吗?
    怎么别扭了?子类为父类接口初始化,典型的面向对象的多态,不好意思,c++学的不好,指针忘的差不多了
     n = s.pop();//为什么不能这样赋值??要达到我的这个目的,该怎么做?
      //不可能只用于输出吧,大多数情况总得把它作为中间数据处理啊?是的,stack不可能这样push一下再pop一下,多数时候是作为中间数据处理的,应用的时候可以把stack当做一个缓冲区变量。再由别的方法去调用stack的内容。
      

  4.   

    import java.util.*;
    public class dataStruck{
        public static void main(String[] args){
            Stack<Inteter> s = new Stack()<Integer>;?//没有先声明其数据类型,之后怎么处理啊?如下的一个赋值。
                      //好像赋任何类型的值,它都接受。
            Queue<Integer> q = new LinkedList()<Integer>;//如此定义,实在别扭,是因为java没指针,不能像C/C++那样实现吗?这里有啥好别扭的?
            
            //stack
            int n;
            s.push(new Integer(1));
            s.push(new Integer(3));
            s.push(new Integer(4));
            for(int i=0; i<s.size(); i++){
                  n = s.pop();//为什么不能这样赋值??要达到我的这个目的,该怎么做?
                                          //不可能只用于输出吧,大多数情况总得把它作为中间数据处理啊?
                  System.out.print(n + "  ");
            }
        }
    }学深了,就不会有这样的感觉了,初学都这样的
      

  5.   

    lz 明显是菜鸟,多学习一下java吧,想学习java把以前的c++全“忘”了,才能学好!
      

  6.   

    java的collection API挺好用的呀。
      

  7.   

    package com.bjsxt.hibernate;
    import java.util.*;
    public class DataStruck {

        @SuppressWarnings("unchecked")
    public static void main(String[] args){
         // Q:没有先声明其数据类型,之后怎么处理啊?如下的一个赋值。
         // A:声明一个容器
            Stack s = new Stack();
            // 好像赋任何类型的值,它都接受。
            // 如此定义,实在别扭,是因为java没指针,不能像C/C++那样实现吗?
            // java有指针,引用就是个指针,接口生命
            Queue q = new LinkedList();
            
            //stack
            Object n;
            
    s.push(new Integer(1));
            s.push(new Integer(3));
            s.push(new Integer(4));
            
            for(int i=0; i<=s.size(); i++){
             //这样就可以了
                  n=(s.pop());//为什么不能这样赋值??要达到我的这个目的,该怎么做?
                                          //不可能只用于输出吧,大多数情况总得把它作为中间数据处理啊?
                  System.out.print(n + "  ");
            }
        }
    }程序帮你调通了,注意数据类型,和面向对象的编程方法,多看看API
      

  8.   

    我想问一下楼上的大大,这个程序有问题吧,输出结果不对,逻辑上的,这样写不能输出栈。
    改完的:
    import java.util.*;
    public class dataStruck{
        public static void main(String[] args){
            Stack s = new Stack();//没有先声明其数据类型,之后怎么处理啊?如下的一个赋值。
                      //好像赋任何类型的值,它都接受。
         //   Queue<Integer> q = new LinkedList()<Integer>;//如此定义,实在别扭,是因为java没指针,不能像C/C++那样实现吗?这里有啥好别扭的?
            
            //stack
            Object n;        s.push(new Integer(1));
            s.push(new Integer(3));
            s.push(new Integer(4));
            s.push(6);
            int x=s.size();
         for(int i=0;i<x;i++){
           n=(s.pop());
           System.out.println("weishenmene"+n);
          }
    }}
      

  9.   

    Stack s = new Stack();//没有先声明其数据类型,之后怎么处理啊?如下的一个赋值。Stack<Integer> s = new Stack<Integer>();//声明Integer的模版
      

  10.   


    public static void main(String args[]) {
    Stack<Integer> s = new Stack<Integer>();
    Queue<Integer> q = new LinkedList<Integer>(); // stack
    int n;
    s.push(1);
    s.push(3);
    s.push(4);
    for (int i = 0; i < s.size(); i++) {
    n = s.pop();
    System.out.print(n + "  ");
    } }
      

  11.   

    初学java还是不要乱发牢骚的好,等你具体了解了在做评论吧