Vector 向量 Vector简述
1).Vector底层是用数组实现的List
2).虽然线程安全,但是效率低,所以并不是安全就是好的
3).底层大量方法添加synchronized同步标记,synchronized检查对象是否添加了对象的对象锁
4).容器对象,需要多个线程共享的时候,考虑使用Vector
5).实际使用情况不多,一般笔试面试中会问到差异性
Vector与ArrayList、LinkedList简单区分需要线程安全时,使用Vector
不存在线程安全问题时,并且查找较多用ArrayList(一般使用它)
不存在线程安全问题时,增加或删除元素较多用LinkedList
Vector 实战1、创建Vector
Vector<String> vectorList = new Vector<>(); vectorList.add("C"); vectorList.add("E"); vectorList.add("A"); vectorList.add("D"); vectorList.add("B");2、测试Vector
System.out.println(vectorList.toString());3、源码查阅
方法:
从源码中可以看到方法的实现大致与List的相似,只是多了synchronized限制:
4、常用方法实战
(1) 降序排序
Vector<String> vectorList = new Vector<>(); vectorList.add("C"); vectorList.add("E"); vectorList.add("A"); vectorList.add("D"); vectorList.add("B"); // 降序排序 vectorList.sort(Comparator.reverseOrder()); System.out.println(vectorList.toString());(2)升序排序
Vector<String> vectorList = new Vector<>(); vectorList.add("C"); vectorList.add("E"); vectorList.add("A"); vectorList.add("D"); vectorList.add("B"); // 升序排序 vectorList.sort(Comparator.naturalOrder()); System.out.println(vectorList.toString());(3)遍历输出每一个元素
Vector<String> vectorList = new Vector<>(); vectorList.add("C"); vectorList.add("E"); vectorList.add("A"); vectorList.add("D"); vectorList.add("B"); // 遍历输出每一个元素 vectorList.forEach((k) -> { System.out.println(k.toString()); });(4)输出index开始以后的元素
Vector<String> vectorList = new Vector<>(); vectorList.add("C"); vectorList.add("E"); vectorList.add("A"); vectorList.add("D"); vectorList.add("B"); // 输出index开始以后的元素 ListIterator<String> stringListIterator = vectorList.listIterator(3); while (stringListIterator.hasNext()) { String next = stringListIterator.next(); System.out.println("stringListIterator:" + next); }(5)过滤
Vector<String> vectorList = new Vector<>(); vectorList.add("C"); vectorList.add("E"); vectorList.add("A"); vectorList.add("D"); vectorList.add("B"); // 过滤 vectorList.removeIf( new Predicate<String>() { @Override public boolean test(String s) { // 过滤掉等于C的 return "C".equals(s); } } ); System.out.println(vectorList.toString());(6)截取从索引值1到2的元素
Vector<String> vectorList = new Vector<>(); vectorList.add("C"); vectorList.add("E"); vectorList.add("A"); vectorList.add("D"); vectorList.add("B"); Vector<String> clone = (Vector<String>) vectorList.clone(); // 截取从索引值1到2的元素 List<String> stringList = clone.subList(1, 3); System.out.println("截取" + stringList.toString());(7)替换数组内的值
Vector<String> vectorList = new Vector<>(); vectorList.add("C"); vectorList.add("E"); vectorList.add("A"); vectorList.add("D"); vectorList.add("B"); UnaryOperator<String> unaryOperator = (String string) -> { return string + ".mrLiu"; }; // 替换数组内的值 vectorList.replaceAll(unaryOperator); System.out.println(vectorList.toString());(8)移除所有元素
Vector<String> vectorList = new Vector<>(); vectorList.add("C"); vectorList.add("E"); vectorList.add("A"); vectorList.add("D"); vectorList.add("B"); // 移除所有元素 vectorList.removeAllElements(); System.out.println(vectorList.toString());(9)添加元素
Vector<String> vectorList = new Vector<>(); vectorList.add("C"); vectorList.add("E"); vectorList.add("A"); vectorList.add("D"); vectorList.add("B"); // 添加元素 vectorList.addElement("H"); System.out.println(vectorList.toString());