集合Map,List,set

  • Java集合中继承Collection接口分为4种:Set(无序不可重复),List(有序可重复),Map(映射关系),Queue(队列)。

  • 集合只能保存对象,不能保存基本数据类型,虽然集合不能存放基本数据类型,但是它支持自动装箱。

  • Java集合主要由两个接口派生:Collection和Map。它们是Java集合框架的根接口。

  • Collection接口的子接口有:List,Set,Queue。

  • Set表示数学意义上的集合概念。该接口有两个实现类HashSet和TreeSet,其中TreeSet实现了SortedSet接口,因此TreeSet容器中的元素是有序的,它基于红黑树数据结构实现(SortedSet是用来进行排序的),set的顺序和添加数据的顺序无关,它是按照值的实际大小排序的。

  • Map提供了一个从映射到值的数据结构,Java类库中有多个实现类,HashMap,TreeMap,LinkedHashMap,WeakHashMap和IdentityHashMap。其中HashMap是基于散列表实现,TreeMap基于红黑树数据结构实现。LinkedHashMap采用列表来维护内部顺序。

    /*
     * Set是无序切不可重复的集合,
     * 因此存入Set集合的每一个元素都需要定义一个equals()方法来确保对象的唯一性。
     * 简单的说就是每次添加一个元素都会先调用equals()方法来进行判断,
     * 返回值为false进行存入,true不写入。
     * 所以Set类型的集合就算添加100次相同的元素值,集合长度也只有1。
     * Set集合元素查找的就是它本身。
     * */
    Collection c=new TreeSet();//TreeSet是有序的,因为TreeSet实现了SortedSet接口。
    c.add("小花");
    c.add("小花");
    c.add("小花");
    c.add("小明");
    c.add("小兰");
    System.out.println(c);
    System.out.println("集合c的长度:"+c.size());
    System.out.println( "集合c里面是否包含小花:"+c.contains("小花"));
    
     Collection c1=new HashSet();
     c1.add("小明");
     c1.add("小花");
     c1.add("小兰");
     System.out.println(c1);
     System.out.println("集合c1的长度:"+c1.size());
     System.out.println( "集合c里面是否包含小明:"+c1.contains("小明"));
    

在这里插入图片描述

   /*
   * Iterator必须依附于Collection,每一个Iterator对象,
   * 必然会有一个Collection对象与之关联。
   * Collection是继承的Iterator接口,而没有直接实现,采用的间接实现。
   * */
    for (Iterator it=c.iterator();it.hasNext();){
        System.out.println(it.next());
        if (it.next().equals("小花")) it.remove();
        //在使用Iterator迭代的过程中不能修改/添加/删除集合里面的元素,
        //会发生ConcurrentModificationException异常
        c.add("小羊");//会出错,解决办法就是将要操作的元素先保存在一个集合中,等迭代完成了在进行操作。
    }

在这里插入图片描述

   /*
    * Map集合采用键值对(Key-value)形式进行存储,保存具有映射关系的数据
    * Map集合中Key不能重复,但是value可以重复
    * */
    Map map=new TreeMap();//TreeMap是有序的,因为TreeMap实现了SortedMap接口。
    map.put("key1",1);
    map.put("key2",1);
    map.put("key3",1);
    System.out.println(map);
    System.out.println("集合map的长度:"+map.size());
    System.out.println( "集合map里面是否包含小明:"+map.containsKey("key1"));
    
    Map map1=new HashMap();
	map1.put("key1",3);
    map1.put("key2",2);
    map1.put("key3",1);
    System.out.println(map);
    System.out.println("集合map的长度:"+map1.size());
    System.out.println( "集合map里面是否包含小明:"+map1.containsKey("key1"));
}

在这里插入图片描述

  • TreeSet和TreeMap
    TreeSet底层的实现其实是通过TreeMap来实现的,因此它底层实现的原理是红黑树
    (HashSet底层的实是通过HashMap来实现的,因此它底层实现的原理是散列表)它们实现的核心方法使用的hashCode()和equals();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值