如果要往Vector中添加类似这样的一组数据 “1,aaaa”“3,aaaa”“6,aaaa”“2,aaaa”“5,aaaa”“4,aaaa”,这些数据从另外的类传递过来,动态的添加到Vector,而且还要按照前面的序号进行排序,我自己添加的时候,总是会出现错误,vector中有一部分的值是null,不知道用怎么的方法进行动态的保存,求讲解~

解决方案 »

  1.   


        判断前面的序号是多少然后就这样搞   v.setElementAt("a", 1);
    v.setElementAt("b", 2);
    v.setElementAt("c", 3);
      

  2.   

    Vector  v = new Vector();
      

  3.   


    Collections.sort(v, new Comparator<String>() {
        public int compare(String s1, String s2) {
            return Integer.parseInt(s1.substring(0, s1.indexOf(",")))
                   - Integer.parseInt(s2.substring(0, s2.indexOf(",")))
        }
    });
    lz自己调试下。
      

  4.   

    出现了异常,
    java.lang.ArrayIndexOutOfBoundsException: 1 > 0
      

  5.   


    这个会报异常的吧,
    “1,aaaa”“3,aaaa”“6,aaaa”“2,aaaa”“5,aaaa”“4,aaaa”读到3的时候,其实v的长度只有1,你v.setElementAt("3,aaaa", 3);
      

  6.   

    我想先动态的保存数据到Vector,我现在每次保存的时候,size一直都是1,不知道该怎么处理( ⊙ o ⊙ )啊!
      

  7.   


         Vector<String> v = new Vector<String>();
         v.add("1,aaaa");
         v.add("3,aaaa");
         v.add("6,aaaa");
         v.add("2,aaaa");
         v.add("5,aaaa");
         v.add("4,aaaa");     Collections.sort(v, new Comparator<String>() {
             public int compare(String s1, String s2) {
                 return Integer.parseInt(s1.substring(0, s1.indexOf(",")))
                        - Integer.parseInt(s2.substring(0, s2.indexOf(",")));
             }
         });     for(int i = 0; i < v.size(); i++) {
            System.err.println(v.get(i));
         }
      

  8.   

    1,aaaa
    2,aaaa
    3,aaaa
    4,aaaa
    5,aaaa
    6,aaaa
      

  9.   

    因为vector是动态增加大小的,没添加一条数据,大小增加一次,所以当你添加的值得索引大于当前vector的容量时就会报异常。
    你可以这样做:
    每添加一条数据,加一个判断,如果当前要加入的索引值大于当前vector.size(),就执行一次vector.setSize(num),重新设置大小。。这样就会增大vector的长度大小当然,如果数据量比较大时,你可以每次setSize()的长度按照一个固定大小值,例如100,或者1000等等增加,这样可以减少改变容量的次数。
      

  10.   

    如果没有限定非得用 vector的话,,建议使用HashMap来存储
      

  11.   


    你是被1楼的说法误导了,他说的方法本来就是错误的,还要照这错误的方式去分析,另外用HashMap存储干啥?你又不是(key,value)