캐 시 란 무엇 입 니까?
//
public class LinkedList {
public LinkedList() {
size = 0;
}
Node list;
//
int size;
//
//
public void add(T data) {
Node head = list;
Node curNode = new Node(data, list);
list = curNode;
size++;
}
// index
public void add(int index, T data) {
checkPositionIndex(index);
Node cur = list;
Node hrad = list;
for (int i = 0; i < index; i++) {
hrad = cur;
cur = cur.next;
}
Node node = new Node(data, cur);
hrad.next = node;
size++;
}
// index
public void checkPositionIndex(int index) {
if (!(index >= 0 && index <= size)) {
throw new IndexOutOfBoundsException("index:" + index + ",size" + size);
}
}
//
public T remove() {
if (list != null) {
Node node = list;
list = list.next;
//gc
node.next = null;
size--;
return node.data;
}
return null;
}
public T remove(int index) {
checkPositionIndex(index);
Node cur = list;
Node hrad = list;
for (int i = 0; i < index; i++) {
hrad = cur;
cur = cur.next;
}
hrad.next = cur.next;
//gc
cur.next = null;
size--;
return null;
}
public T removeLast() {
if (list != null) {
Node node = list;
Node cur = list;
while (cur.next != null) {
node = cur;
cur = cur.next;
}
//gc
node.next = null;
size--;
return cur.data;
}
return null;
}
//
public void updata(int index, T newData) {
checkPositionIndex(index);
Node head = list;
for (int i = 0; i < index; i++) {
head = head.next;
}
head.data = newData;
}
//
public T get() {
Node node = list;
if (node != null) {
return node.data;
} else {
return null;
}
}
public T get(int index) {
checkPositionIndex(index);
Node node = list;
for (int i = 0; i < index; i++) {
node = node.next;
}
return node.data;
}
class Node {
T data;
Node next;
public Node(T data,
Node next) {
this.data = data;
this.next = next;
}
}
@Override
public String toString() {
Node node = list;
for (int i = 0; i < size; i++) {
System.out.println("" + node.data);
node = node.next;
}
return super.toString();
}
}
public class LruLinhedList extends LinkedList {
//
int memorySize;
static final int DEFAULT_CAP = 6;
public LruLinhedList() {
this(DEFAULT_CAP);
}
public LruLinhedList(int memorySize) {
this.memorySize = memorySize;
}
// LRU
public void lruAdd(T data) {
if (size >= memorySize) {
removeLast();
add(data);
} else {
add(data);
}
}
//
public T lruRmove() {
return removeLast();
}
public T lruGet(int index) {
checkPositionIndex(index);
Node node = list;
Node pro = list;
for (int i = 0; i < index; i++) {
pro = node;
node = node.next;
}
T reData = node.data;
//
pro.next = node.next;
Node head = list;
node.next = head;
list = node;
return reData;
}
public static void main(String[] args) {
LruLinhedList LinkedList = new LruLinhedList<>(6);
for (int i = 0; i < 6; i++) {
LinkedList.lruAdd("" + i);
}
LinkedList.toString();
System.out.println("" + LinkedList.lruGet(4));
LinkedList.toString();
LinkedList.lruAdd(90+"");
LinkedList.toString();
// LinkedList.lruGet(23);
// LinkedList.toString();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
범용 용법 예시앞으로 51CTO 에 정착 해 기술 개발 에 전념 할 테 니 잘 부탁드립니다.다음 코드 는 자신 이 (저자: 이 흥 화) 를 공부 할 때 두 드 린 코드 로 주석 이 완비 되 어 있다. 범용 클래스 Point. ja...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.