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
}