利用动态数据实现List

import java.util.Iterator;

/**
 * 动态调整数组大小 下压栈实现
 * @param <Item>
 */
public class LifoDemo<Item> implements Iterable<Item> {

    private Item[] a = (Item[]) new Object[1];
    private int N = 0;
    public boolean isEmpty(){
        return N == 0;
    }
    public int size(){
        return N;
    }

    /**
     * 实现数组动态
     * @param max
     */
    private void resize(int max){
        Item[] temp = (Item[]) new Object[max];
        for (int i = 0 ;i < N; i++)
            temp[i] = a[i];
        a = temp;
    }

    /**
     * 添加元素
     * @param item
     */
    public void push(Item item){
        if (a.length == N)
            resize(2*a.length);
        a[N++] = item;
    }

    /**
     * 删除栈顶元素
     * @return
     */
    public Item pop(){
        Item temp = a[--N];
        int legth = a.length;
        System.out.println(legth);
        if (N>0 && N == a.length / 4)
            resize(a.length / 2);
        return temp;
    }

    public Iterator<Item> iterator() {
        return new ReverArrayIterator();
    }
    private class ReverArrayIterator implements Iterator<Item>{
        private int N;
        public boolean hasNext(){
            return N > 0;
        }
        public Item next(){
            return a[--N];
        }
    }

    public static void main(String[] args) {
        LifoDemo<String> lifoDemo = new LifoDemo<>();
        lifoDemo.push("ada");
        System.out.println(lifoDemo.size());
        lifoDemo.pop();
        System.out.println(lifoDemo.size());
    }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Redisson可以很方便地实现数据缓存。Redisson是一个基于Redis的Java客户端,它提供了丰富的功能和API,包括分布式锁、分布式集合、分布式对象等。在使用Redisson实现数据缓存时,可以通过以下步骤进行操作: 1. 引入Redisson的依赖并配置Redis连接信息。 2. 创建RedissonClient对象,该对象是Redisson的核心组件,用于与Redis进行通信。 3. 使用Redisson提供的分布式锁功能,可以通过调用tryLock方法来加锁,该方法会返回一个布尔值表示是否成功获取到锁。在加锁时,可以设置锁的过期时间,以防止锁被长时间占用。 4. 在获取到锁之后,可以从缓存中读取数据。如果缓存中不存在所需的数据,可以从数据库或其他数据源中获取,并将数据存入缓存中。 5. 在数据更新或删除时,需要先获取到锁,然后进行相应的操作,并更新缓存。 6. 在操作完成后,需要释放锁,以便其他线程或进程可以获取到锁并进行操作。 通过以上步骤,可以利用Redisson实现数据缓存,并保证数据的一致性和并发安全性。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [分布式锁Redisson快速入门及利用AOP实现声明式缓存](https://blog.csdn.net/weixin_44743245/article/details/120805755)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [redisson做分布式缓存(加锁方面)](https://blog.csdn.net/weixin_55034383/article/details/129333680)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值