首页 > 其他 > 详细

无限循环 之 数据适配器 DataApdater

时间:2021-05-28 22:41:18      阅读:19      评论:0      收藏:0      [点我收藏+]
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DataApdater<T>
{
    #region 字段

    //保存的所有数据
    public List<T> allData = new List<T>();    //不知道什么类型  所以是泛型
    //保存当前正在显示的数据
    public LinkedList<T> currentShowData = new LinkedList<T>();   //LinkedList 链表

    #endregion


    #region 方法

    public T GetHeaderData()
    {
        //判断总数据的数量
        if (allData.Count == 0) {
            return default(T);
        }
        //特殊情况
        if ( currentShowData.Count == 0 )
        {
            T header = allData[0];
            currentShowData.AddFirst(header);
            return header;
        }

        //currentShowData 当前正在显示的第一个数据
        T t = currentShowData.First.Value;
        int index = allData.IndexOf(t);
        if (index != 0)                          //判断数据不为空时
        {
            T header = allData[index - 1];
            currentShowData.AddFirst(header);    //将数据加到头部
            return header;
        }

        return default(T);                       //如果等于零,默认值为空
    }

    public bool RemoveHeadData() {
        //移除 currentShowData 当前正在显示的第一个数据的第一个数据
        if (currentShowData.Count == 0)
        {
            return false;
        }
        currentShowData.RemoveFirst();
        return true;
    }

    public T GetLastData() {
        //判断总数据的数量
        if (allData.Count == 0)
        {
            return default(T);
        }
        //特殊情况
        if (currentShowData.Count == 0 || currentShowData.Count == 1)
        {
            T l = allData[0];
            currentShowData.AddLast(l);
            return l;
        }

        //获取 currentShowData 最后一个的下一个

        T last = currentShowData.Last.Value;
        int index = allData.IndexOf(last);

        if (index != allData.Count - 1)
        {
            T now_last = allData[index + 1];
            currentShowData.AddLast(now_last);
            return now_last;
        }
        return default(T);
    }

    public bool RemoveLastData() {
        //移除 currentShowData 最后一个
        if (currentShowData.Count == 0 || currentShowData.Count == 1) { return false; }
        currentShowData.RemoveLast();
        return true;
    }

    #endregion

    #region 数据管理

    public void InitData(T[] t) {
        allData.Clear();
        currentShowData.Clear();
        allData.AddRange(t);
    }

    public void InitData(List<T> t  )  //重载函数
    {
        InitData(t.ToArray());
    }

    public void AddData(T[] t)          //添加数据
    {
        allData.AddRange(t);
    }

    public void AddData(List<T> t)
    {
        AddData(t.ToArray());
    }
    #endregion

}

 

无限循环 之 数据适配器 DataApdater

原文:https://www.cnblogs.com/gyjldlhiahia/p/14823712.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!