zoukankan      html  css  js  c++  java
  • 集合接口一

    容器(Collection)
    数组是一种容器, 集合也是一种容器
    java编程中, 装其他各种各样的对象(引用类型)的一种东西, 叫容器

    (图书馆里所有的书, 要想管理图书馆里所有的书, 就需要先把这些书放到一个东西里面, 目前掌握的知识来说, 只能是数组,
    数组的长度是固定的, 这就出现一个问题, 数组的长度该定义成多长 ? 长度是不固定的, 因为不知道有多少本书, 这个时候需
    要这样一种机制: 定义一种东西, 长度不固定, 可以随时添加和删除, 这种东西就是Collection, 只要不超出内存, 随便往里添加)

    Collection
    List---(有顺序, 可以重复-->可以互相equals(引用类型))---下标
    LinkedList(链表)---(改快,查慢)
    *ArrayList(数组)---(改慢,查快)
    Set---(没有顺序, 不可以重复)
    *HashSet(hash码表)(必须重写hashCode()方法)
    TreeSet(二叉树---数据结构)
    Map(键值对)(键不能重复)
    Map<Person.hashCode(), int>
    *HashMap
    TreeMap

    Comparable(一个方法(comparaTo))
    Iterator(循环遍历, 3个方法)
    boolean hasNext()
    Object next()
    remove()
    while(hasNext()) {
    next()
    }


    Collection---接口:
    Set接口
    *HashSet---实现类(以哈希码表为底层的实现机制)
    TreeSet---实现类(以二叉树(一种数据结构)为底层的实现机制)
    没有顺序, 不可以重复(可以互相equals就叫重复)
    List接口
    *ArrayList---实现类(以数组为底层的实现机制)
    LinkedList---实现类(以链表为底层的实现机制)
    有顺序, 可以重复

    Map接口(键值对)
    *HashMap---实现类
    TreeMap---实现类
    每次往里放的时候都是一对一对的

    Collection接口的方法
    Collection接口的使用
    Collection<String> c = new ArrayList<String>();
    问题: 为什么不直接写ArrayList<String> a = new ArrayList<String>();
    c.add(参数类型必须是Object)

    c.remove方法: 通过判断两个对象是否互相的equals来确定是不是该删除该对象, 自定义的类, 需要自己重写父类的equals方法
    重写equals方法, 也应该重写hashCode方法

    hashCode通常用来做索引, 一个对象通过它的hashCode的值可以找到它在内存中的地址, 所以两个对象如果equals了, 而且又要作为索引的情况下, hashCode的值必须相等

    import java.util.Arrays;
    
    public class MyArray {
        
         private Object[] objs;
         private int size;
         
         public MyArray(){
             objs = new Object[10];
             size = 0;
         }
         public int size(){
             return size;
         }
         public boolean add(Object o){
             if(size<objs.length){
                 objs[size]=o;
             }else{
                 Object[] os=Arrays.copyOf(objs, size+1);
                 os[size]=o;
                 objs=os;
             }
             size++;
             if(size==objs.length){
                 return true;
             }
             return false;
         }
         public String toString(){
            Object[] onew = new Object[size];
            for(int i=0;i<size;i++){
                onew[i]=objs[i];
            }
            return Arrays.toString(onew);
         }
         
    }
    import util.MyArray;
    
    public class Text {
        public static void main (String[] args){
             MyArray ma = new MyArray();
             ma.add("aaa");
             ma.add("bbb");
             ma.add("ccc");
             ma.add(222);
             ma.add(333);
             System.out.println(ma.size());
             System.out.println(ma);
        }
    }
    import java.util.ArrayList;
    import java.util.Collection;
    
    public class TextCollection {
        public static void main(String[] args){
            Collection c=new ArrayList();
            c.add(2);
            c.add("hello");
            c.add(new Person());
            System.out.println(c);
            
            c.remove(2);
            c.remove("hello");
            c.remove(new Person());
            System.out.println(c.size());
            System.out.println(c);
        }
    }
    class Person{
    
        @Override
        public String toString() {
            return "Person [哈哈]";
        }
        
    }
  • 相关阅读:
    【原创】NOR FLASH Block Unprotection
    虚拟机:Snapshot
    Struts2:简单登陆验证DAO VO ACTION
    Cocos2dx:安装
    LoadRunner:Socket+Http协议
    LoadRunner中添加外部文件(md5.h),使用MD5
    Javascript实现网页水印(非图片水印)
    ASP.NET网站限制访问频率
    再谈“ASP.NET网站限制恶意访问”
    【新闻】“赢在淘宝”b比赛 30强、10强火热出炉~!
  • 原文地址:https://www.cnblogs.com/jgjk/p/7252621.html
Copyright © 2011-2022 走看看