容器

容器

容器

List  有序可重复

Set  无序不可重复

Map    键值列  通过一个对象找另一个对象

容器

容器有很多方法的实现   List和Set都继承自Collection    而其中Set和Collection基本差不多方法  而list是有序的  所以要比Collection多很多方法 多很多有关索引方面的方法·  (因为顺序需要索引)

 

 

transient  短暂的:  http://www.importnew.com/21517.html   只存在调用者的内存中  而不会写在磁盘里面永久化

util包下面

List:

 

package Collection;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class Test01 {
    public static void main(String[] args) {
        List list=new ArrayList();
        list.add("陈幸源");
        list.add("陈幸源");
        list.add("方秋丽");
        list.add("刘晨");
        list.add(new Date());
        list.add(new Date());
        list.add(1234);//包装类自动装箱   Interger     Integer i=18;
        list.remove("陈幸源");
        list.remove(new Date());
        for (Object object : list) {
            System.out.println(object);
        }
        /*System.out.println(list.size());
        System.out.println(list.get(0));
        System.out.println(list.get(1));*/
    /*    Integer a=-129;
        Integer b=-125;
        System.out.println(a==b);
        System.out.println(list.size());//这size 和ArrayList 类中的 Object[]数组大小是不一样的 后者要比较大
//        System.out.println(ArrayList.DEFAULTCAPACITY_EMPTY_ELEMENTDATA.length());
        Class t=ArrayList.class;
        Field t1;
        try {
            t1 = t.getDeclaredField("EMPTY_ELEMENTDATA");
            System.out.println(t1.getName());
        } catch (NoSuchFieldException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        } catch (SecurityException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
        list.remove("刘晨");
        list.remove(new Date());//hashcode and equals
        System.out.println(list.size());
        List list2=new ArrayList();
        list2.add("nihao");
        list2.add("wohao");
        list.addAll(list2);
        System.out.println(list.size());
        //顺序有关
        System.out.println(list.get(0));
        list.set(0, "陈幸源酷酷的");
        System.out.println(list.get(0));
        Date h=new Date();
        Date h1=new Date();
        System.out.println(h==h1);
        System.out.println(h.equals(h1));*/
    }
}
class Bom{
    private String name;
}
 

 

注意     基本上大部分类的equals方法都重写了   不再是Object中的意思  和==一样在Object类中   需要对象的引用相等才是true

重写后一般都是写成内容相等就是itrue   所以new Date()删New Date()它删除的就是相通的内容 而不是对象引用相等   因为明显是两个不同的对象哦  new创建新对象    

然后   如果有相同的  要移出  只会移出最先找到的哪一个就返回了

 

 

容器

List  Set  Map都是借口哈

 

模拟链表

package Collection;

import java.util.List;

import javax.imageio.event.IIOReadProgressListener;
import javax.print.attribute.Size2DSyntax;

public class SxLinkedList /*implements List*/{
    private Node first;//头
    private Node last;//尾
    private int size;
    
    public void add(Object obj){
        Node n=new Node();
        if(first==null){
            n.setPrevious(null);
            n.setNext(null);
            n.setObj(obj);
            first=n;
            last=n;
        }else{
            n.setPrevious(last);
            n.setNext(null);
            n.setObj(obj);
            last.setNext(n);
            last=n;
        }
        size ++;
    }
    public int size(){
        return size;
    }
    public Node Index(int index){
        Node temp=new Node();
        if(index>=0){
            if(first==null){
            }else{
            temp=first;
            while(temp.next!=null){
            for(int i=0;i<index;i++){
                temp=temp.next;
            }
            return temp;
            }
        }
        }
        return null;
    }
    public Object get(int index){
        Node temp=Index(index);
        return temp.getObj();
    }
    public void remove(int index){
        Node node=Index(index);
        if(node.next!=null&&node.previous!=null){
            Node up=node.previous;
            Node down=node.next;
            up.next=down;
            down.previous=up;
        }else if(node.previous!=null&&node.next==null){
            Node up=node.previous;
            up.next=null;
        }else if(node==first){
            if(node.next==null){
                first.setObj(null);
            }else{
                Node node1=first.next;
                first=node1;
                first.previous=null;
            }
        }
        size--;
    }
    public void add(int index,Object obj){
        Node temp=new Node(null,obj,null);
        Node node=Index(index);
        if(index>=0&&index<size){
            Node up=node.previous;
            up.next=temp;
            temp.previous=up;
            temp.next=node;
            node.previous=temp;    
            size++;
        }
    }
    public static void main(String[] args) {
        SxLinkedList list=new SxLinkedList();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        list.add(2,"eee");
        list.add(2,"fff");
        list.add(2,"ggg");
        list.add(2,"hhh");
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }
        /*System.out.println(list.size());
        System.out.println(list.size);
        System.out.println(list.get(0));
        System.out.println(list.get(1));
        System.out.println(list.get(2));
        System.out.println(list.get(3));
        list.remove(0);
        System.out.println(list.size());
        System.out.println(list.get(0));*/
    }
}
 

 

 

package Collection;

public class Node {
    Node previous;
    private Object obj;
    Node next;
    public Node(){
        
    }
    public Node(Node previous, Object obj, Node next) {
        super();
        this.previous = previous;
        this.obj = obj;
        this.next = next;
    }
    public Object getPrevious() {
        return previous;
    }
    public void setPrevious(Node previous) {
        this.previous = previous;
    }
    public Object getObj() {
        return obj;
    }
    public void setObj(Object obj) {
        this.obj = obj;
    }
    public Object getNext() {
        return next;
    }
    public void setNext(Node next) {
        this.next = next;
    }
    
}
 

 

 

Map

容器

容器

容器

容器

package Collection;

import java.util.HashMap;
import java.util.Map;

public class TestMap {
    public static void main(String[] args) {
        Map map=new HashMap();
        map.put("陈幸源", new wife("方秋丽"));
        map.put("幸源", "秋丽");
        System.out.println(map.get("陈幸源"));
        System.out.println(map.get("幸源"));
        map.put("chen", "liu");
        boolean b=map.containsKey("chen");
        boolean c=map.containsKey("xing");
        System.out.println(b);
        System.out.println(c);
    }
}
class wife{
    String name;
    public wife(String name){
        this.name=name;
    }
}
 

HashMap:线性不安全效率高

HashTable:线性安全效率低  

 

模拟Map  看看写法哈

    public Object get(Object a){
        for(int i=0;i<size;i++){
            if(arr[i].key.equals(a)){
                return arr[i].value;
            }
        }
        return null;
    }

没有就返回null就行