javavector源码
① java中的vector 是什么意思呢
java中vector和数据非常类似,两者之间也经常成对出现,下面是两者的比较:
1、数组:java arrays的元素个数不能下标越界,从很大程度上保证了java程序的安全性,但创建时必须指定数组的大小,并不能再改变。
2、vector:对比于array,当更多的元素被加入进来以至超出其容量时,vector的size会动态增长,而array容量是定死的。同时,vector在删除一些元素后,其所有下标大于被删除元素的元素都依次前移,并获得新下标比原来的小了)。
② list和vector的contains方法源码相同,输出怎么不同呢
可能是 底层实现机制不同 vector的是 自增长的数组 而list则是双向链表
③ JAVA 中怎样用 Vector 做一个循环队列
import java.util.Random;
public class VQ<T> {
java.util.Vector<T> eles;
int p=0,q=0;
public VQ(int size){
init(size);
}
private void init(int size) {
eles=new java.util.Vector<T>(size);
eles.setSize(size);
}
public VQ(){
init(16);
}
public boolean empty(){
return p==q;
}
public boolean full(){
return ((p+1)%eles.size())==q;
}
public T pop_front(){
assert !empty();
T ret= eles.get(q);
++q;
q%=eles.size();
return ret;
}
public void push_back(T v){
if(!full()){
eles.set(p, v);
++p;
p%=eles.size();
return;
}
VQ<T> tmp=new VQ<T>(eles.size()*2);
while(!empty()){
tmp.push_back(pop_front());
}
eles=tmp.eles;
p=tmp.p;
q=tmp.q;
push_back(v);
}
/**
* @param args
*/
public static void main(String[] args) {
VQ<Integer> t=new VQ<Integer>();
for(int i=0;i!=100;++i){
if(Math.random()>0.3||t.empty()){
t.push_back(i);
}else{
System.out.print(t.pop_front()+",");
}
}
while(!t.empty()){
System.out.print(t.pop_front()+",");
}
}
}
④ Java中的Vector是什么意思
vector与数组类似,但能被扩大和缩小。
向量与数组的区别:
1、Java的数组可存储任何类型的数组元素,包括数值类型和所有类类型
2、Java向量只能存储对象类的实例。
向量能重定位和调整自己的容量。缺省时,向量重定位一次,其容量就扩大一倍,呈指数增长,所以应指定容量增量,做为向量构造函数的第二个参数,来创建向量:
Vector itemsOrdered = new Vector(3.10);这样向量每重定位一次,其容量都增加10个元素。
v.size()返回向量中的元素个数,等价于 arry.length();
如果向量已达到其永久大小,则可调用tirmToSize 方法,将内存块大小调整到刚好能容纳当前个数的向量元素
向量中不能用方便的[]句法,而必须用elementAt 和setSlementAt 方法来访问或修改元素。
数组:x = a[i](访问) a[i] = x;(修改)
向量:x = v.elementAt(i) v.SetElementAt(x.i)
⑤ java如何判断两个Vector 是否相等一定要循环么 Vector有没有现成的方法
刚才看 Vector.equals() 源码,次序要一样才会相等,如果放进去的次序不一样,也不会相等的。
附: 源码:
public boolean equals(Object o) {
if (o == this)
return true;
if (!(o instanceof List))
return false;
ListIterator<E> e1 = listIterator();
ListIterator e2 = ((List) o).listIterator();
while(e1.hasNext() && e2.hasNext()) {
E o1 = e1.next();
Object o2 = e2.next();
if (!(o1==null ? o2==null : o1.equals(o2)))
return false;
}
return !(e1.hasNext() || e2.hasNext());
}
⑥ Java中Vector的定义
Vector 可实现自动增长的对象数组。
java.util.vector提供了向量类(vector)以实现类似动态数组的功能。在Java语言中没有指针的概念,但如果正确灵活地使用指针又确实可以大大提高程序的质量。比如在c,c++中所谓的“动态数组”一般都由指针来实现。为了弥补这个缺点,Java提供了丰富的类库来方便编程者使用,vector类便是其中之一。事实上,灵活使用数组也可以完成向量类的功能,但向量类中提供大量的方法大大方便了用户的使用。
创建了一个向量类的对象后,可以往其中随意插入不同类的对象,即不需顾及类型也不需预先选定向量的容量,并可以方便地进行查找。对于预先不知或者不愿预先定义数组大小,并且需要频繁地进行查找,插入,删除工作的情况。可以考虑使用向量类。
向量类提供了三种构造方法:
public vector()
public vector(int initialcapacity,int capacityIncrement)
public vector(int initialcapacity)
举例说明:
import java.util.Vector;
import java.lang.*;
import java.util.Enumeration;
public class VectorApp
{
public static void main(String args[])
{
Vector v1 = new Vector();
Integer integer1= new Integer(1);
//加入为字符串对象
v1.addElement("one");
//加入的为integer的对象
v1.addElement(integer1);
v1.addElement(integer1);
v1.addElement("two");
v1.addElement(new Integer(2));
v1.addElement(integer1);
v1.addElement(integer1);
//转为字符串并打印
System.out.println("The Vector v1 is:\n\t"+v1);
//向指定位置插入新对象
v1.insertElement("three",2);
v1.insertElement(new Float(3.9),3);
System.out.println("The Vector v1(used method
insertElementAt()is:\n\t)"+v1);
//将指定位置的对象设置为新的对象
//指定位置后的对象依次往后顺延
v1.setElementAt("four",2);
System.out.println("The vector v1 cused method setElmentAt()is:\n\t"+v1);
v1.removeElement(integer1);
//从向量对象v1中删除对象integer1
//由于存在多个integer1,所以从头开始。
//找删除找到的第一个integer1.
Enumeration enum = v1.elements();
System.out.println("The vector v1 (used method removeElememt()is");
while(enum.hasMoreElements())
System.out.println(enum.nextElement()+"");
System.out.println();
//使用枚举类(Enumeration)的方法取得向量对象的每个元素。
System.out.println("The position of Object1(top-to-botton):"+v1.indexOf(integer1));
System.out.println("The position of Object1(tottom-to-top):"+v1.lastIndexOf(integer1));
//按不同的方向查找对象integer1所处的位置
v1.setSize(4);
System.out.println("The new Vector(resized the vector)is:"+v1);
//重新设置v1的大小,多余的元素被抛弃
}
}
运行结果:
运行结果:
E:\java01>java VectorApp
The vector v1 is:[one,1,1,two,2,1,1]
The vector v1(used method insetElementAt()) is:
[one,1,three,3.9,1,two,2,1,1]
The vector v1(used method setElementAt()) is:
[one,1,four,3.9,1,two,2,1,1]
The vector v1(useed method removeElement()) is:
one four 3.9 1 two 2 1 1
The position of object1(top-to-botton):3
The position of object1(botton-to-top):7
The new Vector(resized the vector) is:
[one,four,3.9,1]
⑦ java对vector动态数组中的对象排序,以下代码有何问题,如何修改
package com.tx.collection;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.Vector;
public class Student {
String name;
int score;
public Student(String n, int s) {
name = n;
score = s;
}
public boolean equals(Object o) {
Student other = (Student) o;
return other.score == score;
}
public String toString() {
return name + "," + score;
}
public static void main(String[] args) {
Vector<Student> stu = new Vector<Student>();
stu.add(new Student("张三", 90));
stu.add(new Student("李四", 80));
stu.add(new Student("小明", 85));
stu.add(new Student("王五", 60));
stu.add(new Student("何六", 70));
Student index = new Student("", 60);
int t = stu.indexOf(index);
System.out.println("成绩为60的学生姓名为" + stu.elementAt(t).name);
Set<Student> set = new TreeSet(new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
if (o1.score > o2.score)
return -1;
else if (o1.score < o2.score)
return 1;
else
return 0;
}
});
set.addAll(stu);
Iterator<Student> iterator = set.iterator();
while(iterator.hasNext()){
Student s = iterator.next();
System.out.println(s.name+":"+s.score);
}
}
}
⑧ java中vector是什么
Vector是一个数组,与ArrayList最大的区别是Vector当成员超出范围它自增长时每次自增长自身长度的一倍。而ArrayList每次自增长自身长度的一半。
⑨ java中的Vector
vector和arraylist都是差不多的,会用arraylist就可以用vector,但是arraylist速度比它快,但是如果涉及到多线程,就用vector,例子演示直接看文档,或者网上查一下,写了也是废话,第二不就是容器吗,一个vector里有一堆装着string的vector,用法一样,就是多了个容器,会有类型检查,其他类型的放不就去