zoukankan      html  css  js  c++  java
  • 3.9补

    3.9 java基础总结集合①LIst②Set③Map④泛型⑤Collections

     

    集合①LIst②Set③Map④泛型⑤Collections

    一、List:有顺序,可重复
    实现类:
    1、ArrayList 广泛,适用于查询,增删不频繁的(类似数组,其长度可按需增大,增删效率慢)
    2、LinkedList 中间频繁增删的,查询效率低(双向链表,先进先出,不支持随机查找,必须重头开始查找,效率低)
    3、Vector 类似ArrayList,线程安全,性能低

    二、Set:没有顺序,不可重复
    最多存一个null
    实现类:
    1、HashSet 速度快,不排序
    2、TreeSet 速度慢,内部排序,看不到
    3、LinkedHashSet 有序,不重复,顺序为放入顺序

    三、Map 键值对 key-value 键不能重复,值可以。两者都可以是任意类型的对象实例
    实现类:
    1、HashMap 速度快,不排序
    2、TreeMap 速度慢,内部排序
    3、LinkedHashMap 排序

    Linked:链表,前边加了这个的都表示有序的
    List,Set 是Collection的子接口,Map不是,

    Colection 的方法:
    Size,add,remove ,clear , toArray;

    List 的方法:
    add(index,obj)
    contains(Object o) 判断是否包含
    //包含,比较的时候调用当前类型的equals方法,如果没有重写,就是Object的equals方法,即引用。所以重写equals方法可以达到想要的结果
    //当且仅当列表包含满足 (o==null ? e==null : o.equals(e)) 的元素 e 时才返回 true

    get(index)
    set(index,Obj)
    remove(index)
    remove(Object)
    如果是数字,直接是传下标那个,OBject里边有数字的,是自动封箱的包装类,不是基本数据类型

    Set的方法:
    add
    remove
    siza
    contains

    Map的方法:
    put(K,V) 重新put可覆盖前边录入的信息
    -get(key)
    remove(key)
    containskey(k)
    containsvalue(value)
    keySet() 所有键形成Set(不重复)
    values() 所有值形成collection(可以重复)

    四、泛型:允许在定义类、接口时指定类型形式参数,这个类型形式参数将在声明变量、创建对象时确定。
    指定了某种类型,只能放这种类型
    List<Student> group = new ArrayList<Student>();
    就只能放Student类型的,不用强转,也防止了加入其它类型

    自己定义泛型
    public class Hello<T>{
    T t;//这里可不要,成员变量T
    //类上边定义的泛型,只要有<>就可以了,里边是变量名,可以随便取名字,一般E表示元素,KV键值
    public Hello(T t){

    }
    }

    五、Collections工具类
    1、Collections.sort(list);
    自然顺序,可以排基本数据类型,String,包装类,引用的不可以,所以要自己设定排序规则
    当设定排序规则后,这个就可以调用了
    2、
    public class Student implements Comparable{
    public int compareTo(Object obj) {
    Student stu = (Student)obj;

    if(this.age > stu.getAge()){
    return -1;
    }else if(this.age < stu.getAge()){
    return 1;
    }

    return 0;
    }

    }
    这里还可以添加其他比较规则,比如年龄等等
    大的排前边(从大到小)返回-1,因为数轴上小的在左边,

    3、匿名内部类
    Collections.sort(group, new Comparator<Student>(){
    @Override
    public int compare(Student in1, Student in2) {
    if(in1.getName().compareTo(in2.getName()) > 0){
    return -1;
    }else if(in1.getName().compareTo(in2.getName()) < 0){
    return 1;
    }else{
    return 0;
    }
    }//方法compare结束
    }//类Comparator结束
    );//sort方法结束

  • 相关阅读:
    20180813 mysql 手动整理
    20180811 mysql 整理
    20180810 mysql
    20180808 第一阶段项目展示
    20180807 接近第一阶段项目完成 心里话
    20180730 轮播 (加定时器 鼠标移入停止 移除继续轮播 点击小图标换大图片)
    20180730 表格的删除 增加 编辑内容
    10.10日PHP MAC
    10.09日PHP MAC
    数据库类的封装
  • 原文地址:https://www.cnblogs.com/wanglei718/p/5392561.html
Copyright © 2011-2022 走看看