程序如下
共test1和test2两个方法,test1中的Vector为Vector<String>,test2中的为Vector<Layout>,Layout中只有两个String型变量a和b过程:欲查找某字串,看是否在Vector中。
结果:遍历test1用时比遍历test2用时少n倍(本地测试,test1: 15ms   test2: 125ms),
     真实程序使用了多线程,所以这两种方法的总用时就相差很大了。的确test2多了几步,花费了一些时间。
但实际需要上,希望Vector多记录一些信息,所以用了Layout结构。请问:请问有没有变通的办法,既满足可以多记录信息,又可以接近Vector<String>用时的办法呢?
     各位大虾在使用Vector的时候遇到这种矛盾,是怎么解决的呢?#1
VectorTest.java
package temp.vectorTest;import java.util.Date;
import java.util.Vector;public class VectorTest {
        
        static final int loopN = 1000000;
        
        public static void main(String a[]) {
            test1();
            System.exit(0);
        }
        
        // speed test A   String
        public static void test1() {
            // 准备数据
            Vector<String> v = new Vector<String>();
            for (int i = 0; i <= loopN; i++) {
                v.add(Integer.toString(i) + "abcdefg");
            }
            
            // 遍历
            int x;                
            long startTime = new Date().getTime();
            
            x = v.indexOf(Integer.toString(loopN) + "abcdefg");
            
            System.out.println("time:" + (new Date().getTime() - startTime) + " the index is:" + x);
        }
        
        // speed test B   Layout
        public static void test2() {
            
            // 准备数据 
            Vector<Layout> v = new Vector<Layout>();
            for (int i = 0; i <= loopN; i++) {
                Layout l = new Layout();
                l.setA(Integer.toString(i) + "abcdefg");
                v.add(l);
            }            // 遍历
            int x = -1;
            long startTime = new Date().getTime();
            
            String find = Integer.toString(loopN) + "abcdefg";
            for (int i=0;i<v.size();i++) {
                
                Layout l = v.get(i);
                if (find.equals(l.getA())) {
                    x = i;
                    break;
                }
            }
            
            System.out.println("time:" + (new Date().getTime() - startTime) + " the index is:" + x);
        }}#2
Layout.javapackage temp.vectorTest;class Layout {
    
    private String a;
    private String b;
    
    public Layout() {
        
    }
    
    public String getA() {
        return a;
    }
    public void setA(String a) {
        this.a = a;
    }
    public String getB() {
        return b;
    }
    public void setB(String b) {
        this.b = b;
    }
    
}