ArrayList
import java.util.Arrays;
/*
*
*public SxtArrayList05()
* public SxtArrayList05(int capacity)
* public int size()
* public void add(E element
* public E get(int index)
* public void set(E element, int index)
* public void checkRange(int index )
* public void remove(E element)
* public void remove(int index)
* public String toString()
* public static void main(String[] args) )
* */
public class Arraylist<T> {
private static final int CAP = 10;
private Object[] objects;
private int size;
public Arraylist() {
objects = new Object[CAP];
}
public Arraylist(int cap1) {
objects = new Object[cap1];
//
// Object[] objects1 = new Object[cap1];
}
public int size() {
return size;
}
public void add(T mm) {
//扩容
if (size == objects.length) {
Object[] newarry = new Object[objects.length + (CAP >> 1)];
System.arraycopy(objects, 0, newarry, 0, size);
objects = newarry;
}
objects[size] = mm;
size++;
}
@Override
public String toString() {
StringBuffer mm = new StringBuffer();
mm.append("[");
for (int i = 0; i < size; i++) {
mm.append(objects[i] + " ");
}
mm.append("]");
return mm.toString();
}
public T get(int index) {
checkRange(index);
return (T) objects[index];
}
public void set(T element, int index) {
checkRange(index);
objects[index] = element;
}
public void remove(int index) {
checkRange(index);
for (int i = 0; i < size - index - 1; i++)
objects[index + i] = objects[index + 1 + i];
}
public void remove(T element) {
for (int i = 0; i < size; i++) {
if (objects[i].equals(element)) {
remove(i);
}
}
}
public void checkRange(int index) {
if (index < 0 || index > size - 1) {
throw new RuntimeException("yours index error" + index);
}
}
public static void main(String[] args) {
Arraylist<Integer> arraylist = new Arraylist();
Arraylist<String> arraylist2 = new Arraylist();
arraylist2.add("linjinbo");
arraylist2.add("hello");
System.out.println(arraylist2);
for (int i = 0; i < 40; i++) {
arraylist.add(i);
}
System.out.println(arraylist);
arraylist.remove(3);
arraylist.remove(39);
// arraylist.add("linjinbo");
System.out.println(arraylist);
Integer mm = 30;
arraylist.remove(mm);
System.out.println(arraylist);
}
}
运行结果如图
image.png
LinkedList
/*
public void add(int index, E element) { //alt+shift+R
public void remove(int index){ 2
public E get(int index) {
private void checkRange(int index){
private Node getNode(int index){
public void add(E element) {
public String toString() {
*/
public class LinkedList<T> {
private lnode first;
private lnode last;
private int size;
// 1 2 3 4 5
public Object get(int index) {
checkRange(index);
lnode temp = first;
for (int i = 0; i < index - 1; i++) {
temp = temp.next;
}
return temp;
}
public void add(T element) {
lnode temp = new lnode(element);
if (size == 0) {
first = temp;
last = first;
} else {
last.next = temp;
temp.pre = last;
last = temp;
}
size++;
}
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("{");
lnode temp = first;
for (int i = 0; i < size; i++) {
sb.append(temp.data + " ");
temp = temp.next;
}
sb.append("}");
return sb.toString();
}
public void add(int index, Object object) {
checkRange(index);
lnode lnode = new lnode(object);
lnode temp = first;
for (int i = 1; i <= index - 1; i++) {
temp = temp.next;
}
lnode mmm = temp.next;
lnode.next = mmm;
lnode.pre = temp;
temp.next = lnode;
mmm.pre = lnode;
size++;
}
public void remove(int index) {
checkRange(index);
lnode temp = first;
if (index == size) {
last = last.pre;
last.next = null;
} else {
for (int i = 1; i <= index - 1; i++) {
temp = temp.next;
}
lnode mmm = temp.next.next;
temp.next = mmm;
mmm.pre = temp;
}
size--;
}
public void checkRange(int index) {
if (index <=0 || index > size ) {
throw new RuntimeException("yours index error" + index);
}
}
public static void main(String[] args) {
LinkedList<Integer> linkedList = new LinkedList();
for (int i = 1; i <= 10; i++) {
linkedList.add(i);
}
System.out.println(linkedList);
lnode aaa = (lnode) linkedList.get(5);
System.out.println(aaa);
linkedList.add(4, 4);
System.out.println(linkedList);
linkedList.remove(6);
System.out.println(linkedList);
LinkedList<String> linkedList2 = new LinkedList();
linkedList2.add("linjinbo");
linkedList2.add("linjinbo222");
linkedList2.add("linjinbo333");
System.out.println(linkedList2);
linkedList2.remove(3);
System.out.println(linkedList2);
}
}
public class lnode {
lnode pre;
lnode next;
Object data;
@Override
public String toString() {
return data.toString();
}
public lnode(lnode pre, lnode next, Object data) {
this.pre = pre;
this.next = next;
this.data = data;
}
public lnode(Object data) {
this.data = data;
}
}
方法add 还有一些边界情况没考虑 有空自己写吧
运行结果如图
image.png
HashMap
/*
public class SxtHashMap04<K,V>
public V get(K key)
public void put(K key, V value){
public String toString()
public static int myHash(int v, int length
*/
public class HashMap<K, V> {
lnode2[] shuzu;
int size;
final int lenth = 16;
public HashMap() {
shuzu = new lnode2[lenth];
size = 0;
}
public void put(K key, V value) {
lnode2 mm;
lnode2 lnode2 = new lnode2(key, value);
int hashCode = key.hashCode();
int myhash = myHash(hashCode, lenth);
if (shuzu[myhash] == null) {
shuzu[myhash] = lnode2;
lnode2.next = null;
} else {
for (mm = shuzu[myhash]; mm.next != null; ) {
mm = mm.next;
}
mm.next = lnode2;
lnode2.next = null;
}
size++;
}
public static int myHash(int v, int length) {
int aaa = v % (length);
return aaa;
}
@Override
public String toString() {
lnode2 temp;
StringBuffer sb = new StringBuffer();
sb.append("[");
for (int i = 0; i < lenth; i++) {
temp = shuzu[i];
// temp.next != null; !!!!
for (temp = shuzu[i]; temp != null; ) {
sb.append("(" + temp.key + " " + temp.value + ") ");
temp = temp.next;
}
sb.append(" \n");
}
return sb.toString();
}
public static void main(String[] args) {
HashMap<Integer, String> hashMap = new HashMap();
for (int i = 0; i < 56; i++) {
hashMap.put(i, "hhhh" + "");
}
System.out.println(hashMap);
}
}
public class lnode2 {
Object key;
Object value;
lnode2 next;
int hash;
public lnode2(Object key, Object value) {
this.key = key;
this.value = value;
}
}
对于边界的控制最难把握
image.png
网友评论