LIst 接口实现类的选择

LIst 接口实现类的选择

ArrayList : 底层采用数组实现,遍历元素、追加元素速度快,中间插入和删除元素速度慢,线程不安全。
ArrayList使用最广泛,集合元素增加或删除操作不频繁时使用。最适合查询。

Vector; 与ArrayList类似,底层也用数组实现。但Vector是线程安全的性能要低于ArrayList。

LinkedList : 采用双向链表实现,元素空间不连续。遍历元素速度慢,中间插入和删除元素速度快。一般用于需要在集合的中间位置,频繁增加或删除元素时使用。

Set接口

Set 接口实现类,利用元素的hashCode和equals放法,判断集合中的元素是否重复。
如果按希望按元素的属性值去去除重复数据,需要重写hashCode和equals放法。

Set接口实现方法

     add(Object) ------->   向集合中添加元素
     renove(Object)------>  将元素从集合移除
     size() ----->          得到集合的长度
TreeSet :按指定的排序规则对元素进行排序,速度慢,需要由Conparator比较器指定排序规则。当Conparator比较Compare方法,返回0时,表示元素重复。

Map

Map Map接口不是Collection的子接口。Map接口实现类中,一个元素包含两个对象:键对象(key)和值对象(value)。

     Map<String,Student> map;

Map接口中,键对象和值对象可以是任何类的实例,并且键对象不能重复。

常用方法

    put(key,value)     ----->          向集合中添加元素
    get(key)           ----->          根据键对象找到值对象
    keySet()           ----->          得到键对象的集合
    values()           ----->          得到值对象的集合
    remove(key)        ----->          根据键对象移除整个元素
    containsKey(key)   ----->          判断键对象在集合中是否存在

案例

    //Map接口 HashMap实现类
        Map<String,Son> map = new HashMap();
        map.put("tory",new Son("tory",20,3000));
        map.put("tom",new Son("tom",20,2000));

        //get(k)  当key不同时,是做添加,当key不同时,是做修改。
        System.out.println(map.get("tory"));

        //containsKey(k) 判断集合中K是否存在
        System.out.println(map.containsKey("tory1"));

        //remove(k)  通过k移除v
//        map.remove("tory");

        //keySet() 得到键对象集合
        Set<String> keySet = map.keySet();
        // values() 得到值对象集合   返回 Collection集合
        Collection<Son>  collection = map.values();

        //map 集合的遍历

        //通过键集合进行遍历
        for (String key:keySet){
            System.out.println(key + "" +map.get(key));
        }
        System.out.println("======================");

        //通过值集合
        for(Son e : collection){
            System.out.println(e);
        }

HashMap:按键的hash码排列元素,允许键对象或值对象为null值,线程不安全。

Hashtable:按键的hash码排列元素,不允许键对象或值对象为null值,线程安全。

TreeMap:按键的自然顺序排列元素,键对象需要重写hashCode和equals方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值