java基础集合2



Set:无序,不可以重复元素

         |-----HashSet:数据结构是哈希表,线程是非同步的。

保证元素唯一性的原理:判断元素的HashCode值是否相同。如果相同,还会继续判断元素的equals方法,是否为true

|----TreeSet:可以对Set集合中的元素进行排序,当主要条件相同时,一定要比较下次要条件

                                     TreeSet底层运用的数据结构二叉树,保证元素唯一性的依据:

                                                                                                                                   compareToreturn0

TreeSet排序的第一种方式,让元素自身具备比较性,元素需要实现Compareable接口,覆盖compareTo方法,这种方法叫做元素的自然顺序也叫默认顺序。

                                    

                                     TreeSet集合第二张排序方式:

当元素自身不具备比较性时,或者具备的比较性不是所需要的,这时就需要让集合自身具备比较性,在集合初始化时,就有了比较方式。

这时需要定义一个比较器,当参数传递。当两种方式都存在时,以比较器为主。

 

泛型

JKD1.5以后出现的新特性,解决安全隐患

 

好处:

  1. 将运行时期出现的问题ClassCastException,转移到了编译时期方便于程序员解决问题,让运行时期出现的问题减少

  2. 避免了强制转换的麻烦

 

泛型格式:通过<>来定义要操作的引用数据类型。

在使用java提供的对象时,什么时候写泛型?

通常在集合框架中需要定义泛型,只要见到<>就要定义泛型

其实<>就是用来接收类型的。    

 

泛型类

Class utils<T>

{

}

什么时候定义?

         当类中要操作的引用数据类型不确定的时候,早期定义object来完成扩展,现在用泛型类来定义

 

 

泛型类定义的泛型,在整个类中有效,如果被方法使用,那么泛型类的对象明确要操作的具体类型后,所有操作的类型就已经固定了,

为了让不同方法可以操作不同类型,而且类型还不确定,那么可以将泛型定义在方法上

 

特殊之处:静态方法不可以访问类上定义的泛型。如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。

 

泛型的高级应用:

?通配符,也可以说是占位符。

泛型的限定:

<? Extends E>:可以接收E类型或者E的子类型,上限

<? Super E> : 可以接收E类型或者E的父类,下限

 

 

集合框架Map

Map集合特点:该集合存储键值对,一对一对存储,要保证键值的唯一性

  1. 添加

    Put(K key, V valut);会返回这个键原来的值,添加相同键,会覆盖以前的值

    putAll(Map<? extends K, ? extends V> m)

  2. 删除

Clear();

Remove();

  1. 判断

    containsValue(Object value)

    containsKey()Object key)

    isEmpty();

  2. 获取

    Get(Object key):取出一个值

    Size()

    Values()

    entrySet()

    keyset()

 

Map

         |----Hashtable:底层是哈希表数据结构,不可以存入nullnull值,线程同步

         |----HashMap:底层是哈希表数据结构,预习nullnull值,该集合不同步

         |----TreeMap:底层是二叉树,线程不同步,可以用于给map集合中的键排序

Set很像,其实Set底层就是使用Map集合

 

Map集合的两种取出方式:

  1. keySet:将map中所有的键值存入到Set集合中,因为Set具备迭代器,所以可以迭代方式取出所有键值,在根据get方法,获取每一个键对应的值。

Map集合的取出原理:将map集合转成set集合,在通过迭代器取出。

 

  1. Set<Map.Entry<k,v>>entrySet:将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是Map.Entry

 

 

Map.Entry 其实Entry也是一个接口,它是Map接口中的一个内部接口

 

Interface Map

{

         Publicstatic interface Entry

         {

                   Publicabstract object getKey();

                   Publicabstract object getValue();

}

}

 

Class HashMap implements Map

{

         ClassHash implements Map.Entry

         {

                   Public  Object getKey(){}

                   Public  Object getValue(){}

}

}

 

存储到HashSet中要覆写hashcode()equals()方法,要存到二叉树中要实现Compare接口

 

 

什么时候使用Map集合?

         当存在映射关系时使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了python应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值