java集合概述

在面向对象的思想中,为了对多个对象的操作,就要对对象进行存储操作。java集合就像是一个容器,可以存放数量不等的多个对象,还可以保存有映射关系的关联数组。

java集合的分类

  • 1、java集合可以分为CollectionMap两种体系,在这里简单介绍三种具体的实现类
  • 2、Collection接口:List :元素有序,可重复性。–》ArrayList
    Set:元素无序,不可重复性。–》HashSet
  • 3、Map接口:具有映射关系的“Key-Value”的集合。–》HashMap
  1. 测试Collection接口实现ArrayList类的应用 具体的操作请看官方的JDK文档。
Collection coll = new ArrayList();
      coll.add(123);
     // ((ArrayList) coll).add(new Date());
      coll.add(new Date());

      Collection coll2 = new ArrayList();
      coll2.add(123);
      coll2.add(new String("Aa"));

      //保留两个集合相同的部分,如果有,就返回true
      System.out.println(coll.retainAll(coll2));

      Iterator iterator = coll.iterator();
      //遍历集合
      while(iterator.hasNext()) {//如果由下一个元素,返回值就为true,就往下执行
          System.out.println(iterator.next());
      }

      //遍历coll2的集合
      Iterator iterator1 = coll2.iterator();
      while(iterator1.hasNext()){
          System.out.println(iterator1.next());
      }

      //增强遍历-->foreach循环
      for (Object obj : coll2) {
          System.out.println(obj);
      }


  1. Set实现类HashSet Set:存储的元素是无序的,不可重复的
    1、无序性:元素在底层存储的位置是无序的。–>无序性 != 随机性。
    2、不可重复性:Set添加进相同的元素的时候,后面的重复的就不可添加进去。
    说明:要求添加进Set的所在类,一定要重写equals和HashCode方法。进而可以保证set的集合的不可重复性。
    Set的存储机制采用了 哈希算法机制。;
Set set = new HashSet();
       set.add(123);
       set.add(456);
       set.add(new Date());
       set.add(new String("AA"));

       person p1 = new person();
       person p2 = new person();
       set.add(p1);
       set.add(p2);

       System.out.println(set);
 @Override
   public boolean equals(Object o) {
       if (this == o) return true;
       if (o == null || getClass() != o.getClass()) return false;
       person person = (person) o;
       return age == person.age &&
               Objects.equals(name, person.name);
   }
   //重写hashCode,在存入Set集合中的相同对象就会不一样。
   @Override
   public int hashCode() {
       return Objects.hash(name, age);
   }
  1. Map的实现类HashMap ,key是用set来存放的,不可重复,value是用collection来存放的,可以重复;一个key-value是一个entry,entry是存放在set上的,也是不可以重复的。对于对象来说,向HashMap中添加元素的时候,会调用key所在的类的equals方法。判断两个key是否相同。
 Map map = new HashMap();

       map.put(1,"Aa");
       map.put(2,"Bb");
       map.put("CC",3);
       map.put("p1",new person());
       map.put("p1",new person());
       System.out.println(map.size());//输出为4,因为对象的key值相同,会调用person类的equals方法进行比较。
//遍历HashMap集合方法
//遍历key集 -->key集为Set集合,所以是无序的且不重复的
       Set key  = map.keySet();
       for(Object obj : key) {
           System.out.println(obj);
       }
       System.out.println("----------------------");
       //遍历value集 -->value集为Collection集合
       Collection collection  = map.values();
       //用迭代器来遍历
       Iterator iterator =  collection.iterator();
       while(iterator.hasNext()) {
           System.out.println(iterator.next());
       }
       System.out.println("---------------------");
       //遍历key-value键值对
       //方式一
       //思路:先取出相应的key值,再通过get方法取出value值
       Set key1  = map.keySet();
      for (Object obj : key1) {
          System.out.println(obj + "==" + map.get(obj));
      }

      //方式二:利用HashMap现成的方法-->entrySet
       Set set = map.entrySet();
       for (Object obj : set) {
           //将set强转为Map.Entry类型
           Map.Entry entry = (Map.Entry) obj;
           System.out.println(entry);
       }
      

今天又是愉悦的一天,每天保持好心情。加油,共勉之。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个在努力为老板实现梦想的搬砖工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值