Node和Vector

2021.03.18
第34次记录

课堂笔记1:
单链表中的节点
节点是单链表中的基本的单元。
每一个节点Node都有两个属性:
一个属性:是存储内存的数据
另一个属性是:下一个节点的内存地址

代码演示1:

public class Node {
    //存储的数据
    Object element;
    //下一个节点的内存地址
    Node next;
    public Node(){

    }
    public Node(Object element, Node next){
        this.element = element;
        this.next = next;
    }
}
public class Link {
    //头节点
    Node header = null;
    int size = 0;
    public int size(){
        return size;
    }
    //向链表中添加元素的方法
    public void add(Object element){
        //说明还没有节点,需要new一个新的节点对象,作为头节点的对象
        //此时的头节点既是头节点又是尾节点
        if (header == null){
            header = new Node(element, null);
        }else{
            //说明头节点不是空,头节点已经存在
            //找出当前末尾节点,让当前末尾节点的next是新节点
            Node currentLastNode = findLast(header);
            currentLastNode.next = new Node(element, null);
        }
        size++;
    }
    //专门查找末尾节点的方法
    private Node findLast(Node node) {
        if (node.next == null){
            return node;
        }
        return findLast(node.next);
    }

    //删除链表中某个数据的方法
    public void remove(Object obj){

    }
    //修改链表中某个数据的方法
    public void modify(Object newObj){

    }
    //查找链表中某个元素的方法
    public int find(Object obj){
        return 1;
    }
}
public class Test {
    public static void main(String[] args) {
        Link link = new Link();
        link.add(100);
        link.add(200);
        link.add(300);
        //获取元素个数
        System.out.println(link.size());
    }
}

输出结果:
3

课堂笔记2:
Vector:
1.底层也是一个数组;
2.初始化容量:10;
3.怎么扩容?
扩容之后是原容量的2倍
10—>20—>40—>80
4.ArrayList扩容特点:
原容量的1.5倍
10—>1.5*10
5.Vector中所有方法都是线程同步的,都带有synchronized关键字,是线程安全的。
效率较低,使用较少。
6.怎样将一个线程不安全的ArrayList集合转换成线程安全的呢?
使用集合工具类:
java.util.Collection 是集合接口;
java.util.Collection 是集合工具类;

代码演示2:

public class VextorTest {
    public static void main(String[] args) {
        //创建对象
        List vector = new Vector();
        //添加元素
        vector.add(1);
        vector.add(2);
        vector.add(3);
        vector.add(4);
        vector.add(5);
        vector.add(6);
        vector.add(7);
        vector.add(8);
        vector.add(9);
        vector.add(10);
        //扩容
        vector.add(11);
        //遍历
        Iterator iterator = vector.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
        //以后可能会使用这个方法
        List myList = new ArrayList();//非线程安全的
        //编程线程安全的
        Collections.synchronizedList(myList);
        myList.add("111");
        myList.add("222");
        myList.add("333");
        Iterator it = myList.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }
    }
}

输出结果:
1
2
3
4
5
6
7
8
9
10
11
111
222
333

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值