• Java 中 List、HashTable、HashMap、TreeMap


    List


    添加方法(添加到末尾):.add(str)

         .add(index, str) 将新的str 值存入 index索引,原来索引index 和值往后移一位。

    根据索引将元素值改变:.set(index,str)

    根据索引获取元素: .get(index)

    得到list 中元素数的和  .size()

    根据索引删除元素: .remove(index)

    根据元素对象删除内容:.remove(str)

    根据元素从前后往查找: .indexOf(str)    找到即返回索引,未找到返回 -1

    根据元素从后往前查找: .lastIndexOf(str)   找到即返回索引,未找到返回 -1

    list 是否包含某个元素 .contains(str)  ,返回true 或 false

    .equals() 和 .hashcode()

    equals 判断两个对象元素是否相同,

    ArrayList 和 LinkedList

    相同点:  都是List接口实现类 ;线程不安全; 

    异:

       ArrayList 是线性表,是基于动态数组实现,查询快,增删慢; 可自动扩容;

       LinkedList 链表数据实现,查询慢,增删快;

    HashTabe 和 HashMap

    添加方法 .put(index,str)

    根据索引获取元素:.get(index)

     

    相同点:  都是Map接口实现类 ;

    异:

       1. 线程安全性不同: HashTable 是线程安全;添加里synchronized 关键字, HashMap 是非线程安全。

       2. 存储不同: HashTable 不允许null 作为key;  HashMap 允许null 作为key 值,且总是存储在数组第一个节点。

       3. 继承父类不同:HashTale 继承Dictionary 抽象类;  HashMap 继承类AbtractMap。

       4. hash值不同: HashTable 直接使用对象的hashCode; HashMap 重新计算hash值。

       5. 提供contains方法: HashTable 保留了contains,containsKey 和 containsValue  三个方法;  HashMap去除了contains 方法,改成containsKey 和 containsValue。

    TreeMap  根据key, 从小到大自然排序

    List<String> listOne = new ArrayList<String>();
    listOne.add("apple");
    listOne.add("pear");
    listOne.add("banana");
    listOne.add("peach");
    listOne.add("apple");
    System.out.println("banana"+listOne.indexOf("apple"));//从前往后搜索
    System.out.println("banana"+listOne.lastIndexOf("apple"));//从 后往前搜索

    for(int i=0;i<listOne.size();i++){
    System.out.println("value:"+listOne.get(i));
    }
    Iterator it = listOne.iterator();//返回listOne 集合对象
    while (it.hasNext()){
    System.out.println("==value:"+it.next()); //ArrayList从前往后输出值
    }

    Hashtable<Integer,String> ht=new Hashtable<Integer,String>();

    ht.put(1,"Anna");
    ht.put(2,"Bill");
    ht.put(3,"Cindy");
    ht.put(4,"Dell");
    ht.put(5,"Felex");
    ht.put(6,"Elsa");
    Iterator it1 = ht.values().iterator();//获取值的集合对象
    while (it1.hasNext()){
    System.out.println("value:"+it1.next()); //从后往前输出
    }

    Iterator itKey= ht.keySet().iterator();//获取健的集合对象
    while (itKey.hasNext()){
    System.out.println("====key:"+itKey.next()); //从后往前输出
    }
  • 相关阅读:
    HTML浏览器标题栏如何设置
    阿里团队常用的布局——双飞翼布局
    浏览器兼容性问题——IE不支持却很实用的CSS属性Outline和Child
    css选择器:基本选择器
    编程十年
    解决WX-IOS打开公众号网页出现的底部导航条
    Angular6路由复用与延迟加载的冲突解决——看看有备无患
    Ionic2 + Angular4 + JSSDK开发中的若干问题汇总
    [Linq Expression]练习自己写绑定
    [Linq To Sql]解决join时的Collation冲突
  • 原文地址:https://www.cnblogs.com/zhangxiya/p/15403350.html
Copyright © 2020-2023  润新知