`
_kudy
  • 浏览: 15221 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

javase_11(集合的理解)

 
阅读更多

 

集合类:

为什么使用集合类?

在面向对象的编程思想中,都是以对象的形式对事物进行描述的,为了保证对象的生命周期,我们需要持有对象
(什么叫做持有对象呢?Person p = new Person())

数组和集合类的区别?

1.数组和集合类都是容器,都能存储对象
2.集合类优点就是长度可变,而数组一旦定义.长度是不能修改的.


集合的特点:

集合类可用于存储对象.
集合类的长度可变
一个集合可以存储多种类型的对象..

Collection 接口:
1.一个独立的元素的序列,这些元素从一条或多条规则
2.collection接口下分为list集合和Set集合
3.list集合的特点是元素有序,可以允许有重复的元素
4.set集合的特点是元素无序,不允许有重复的元素
↓↓
List(子接口)
↓↓
ArrayList(实现类)
1.底层数组实现,查找快,增删慢
2.线程不安全
----------------------------------
Vector(实现类)
1.与ArrayList基本一样
2.线程安全
----------------------------------
LinkedList(实现类)
1.底层是链表的实现
2.增删快,查找慢


{
List集合元素存取方法一致
使用add()方法增加元素
由于List集合有序,可以使用get()方法获取元素
元素的迭代(Iterator)
通过集合对象的iterator()方法获得迭代器Iterator
通过Iterator迭代器的hasNext()方法判断是否存在下一个元素
通过Iterator迭代器的next()方法获取下一个元素
元素的迭代(Enumeration)
迭代Vector集合中的元素可以使用Enumeration
通过Enumeration的hasNextElements()方法判断是否还有元素
通过Enumeration的nextElement()方法返回下一个元素
}


↓↓
Set(子接口)
↓↓
Set集合无须,不允许有重复的元素
1.set集合通过存入对象的equals方法来保证集合中没有重复的元素

HashSet(实现类)
HashSet是set的子类,因而没有重复元素
底层使用了哈希算法保证没有重复元素
存储对象时,先调用对象的HashSet()方法,找到存储位置,再和当前的存储位置上已经存在的元素通过equals()方法进行比较,如果返回false,才能进行存储
往HashSet集合里存储的对象必须是重写HahCode 和equals()方法。

TreeSet(实现类)
TreeSet集合通过二叉树算法保证无重复元素,并对元素进行排序
第一种方式: 如果对象实现了Comparable接口,就可以存入TreeSet集合 因为它会自动的去调用里面的一个比较方法.所以在Person里面重写
第二种方式: 如果对象没有实现Comparable接口,在创建TreeSet对象时,需要给构造函数扔进一个比较器,实现Comparator接口 .(必须要在匿名内部类重写.或者继承一个类来重写)

----------------------------------

Map接口:
1.一组成对的“键值对”对象,允许根据键来查找值
2.Map集合的健值不允许有重复的,所以Map所有的键都构成了一个Set集合

Iterable接口:
1.JDK1.5新定义的接口作为Collection的父接口
2.主要就是实现了增强for循环

 

jdk1.5的新特征:

泛型:
由于集合可以存储不同数据类型的对象,所以取元素(地址)时会导致类型转换错误
jdk1.5新增加了泛型,为了减少操作集合的出错里
例如: ArrayList<Person> arraylist = new ArrayList<Person>();
比喻: 我在每一个挂了一个牌子.只能是Person 使用.做了一个限制..

使用泛型的好处:
1.提高的代码的安全性
2.讲运行期间的问题转到了编译期间的问题(你懂的~~)
3.省起了类型转换的麻烦
4.泛型类的出现优化了程序设计

增强for循环:
新接口Iterable中定义了增强for循环
可以通过增强for循环对数组和集合进行遍历
在迭代集合元素时,需要定义了泛型才能使用for循环

可变参数:

有的时候在设计方法时无法确定将来别人会传入的参数个数
JDK1.5增加了新特性可变参数,在函数中只声明参数类型,不规定个数
方法接受的参数实际上是一个数组,可以在方法中遍历数组
可变参数只能被定义为函数的最后一个形参
语法格式: 返回值 函数名(参数类型… 形参)

 

package com.javami.kudy.javaapin.StringStudy;
 
 public class Test {
         public static void main(String[]args)
         {
             show(33,45,7657,332,11,5465);
         }
         
         public static void show(int ... i)
         {
             for(int num : i)
                 System.out.println(num);
         }
 }
分享到:
评论

相关推荐

    javaSE代码实例

    17.1.2 JavaSE 5.0中固定尺寸线程池的基本知识 374 17.1.3 自定义尺寸固定线程池的使用 375 17.1.4 单任务线程池的使用 377 17.1.5 可变尺寸线程池的使用 378 17.1.6 延迟线程池的使用 380 17.1.7 使用...

    JavaSE基础面试题.docx

    11.Java中的内存模型 12.JVM如何调整内存大小 13.如何实现Java优化 14.各个集合在项目中的应用场景 15.对ArrayList扩容的理解 16.使用LinkedList删除元素的步骤 17.HashMap、Hashtable、ConcurrentHashMap底层实现...

    集合中常用方法总结大框

    资源主要是Map集合整理,Set集合整理,集合中常用的方法总结,各自底层结构的入门了解,缓缓步入集合门框中,图片绘制更加明了明确,帮助理解。

    javase知识总结

    (3)把大象装进冰箱(理解) A:面向过程实现 B:面向对象实现 注意:如何让我们的操作更符合面向对象思想呢? A:有哪些类 B:每个类有哪些成员 C:类与类的关系 (4)类与对象 A:现实世界的事物 属性 ...

    Java SE查阅手册.pdf

    Java的基本元素、面向对象、基本的设计模式、Java常用的类库、文件与IO、类集合框架、多线程的基础。 笔记主要提炼的是《Java核心技术精讲》的知识,该书的讲解并不深入,只讲解表面的东西。在此基础上并阅读网上的...

    JavaSE基础+设计模式+数据结构+算法.zip

    逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和队列等抽象数据类型。 存储结构(物理结构):描述数据在计算机中如何...

    关于List集合特有的迭代器的反向遍历

    Listiterator迭代器的方向遍历,在反向遍历时 源码中 index中的初值需要在定义的时候传入size集合长度 或者通过正向遍历,将nextIndex的值变为集合的长度 ...如果大佬觉得我理解的不太对,欢迎指正,谢谢

    深入解读大厂java面试必考基本功-HashMap集合配套文档代码资料

    在本套课程中,将会非常深入、非常详细、非常全面的解读HashMap以及...从底层的数据结构到底层源码分析以及怎样使用提高HashMap集合的效率问题等进行分析。如果掌握本套课程,那么再看其他javase的源码时会觉得很简单。

    Java核心技术_卷1(原书第8版)_01

    全书共14章,包括Java基本的程序结构、对象与类、继承、接口与内部类、图形程序设计、事件处理、Swing用户界面组件、部署应用程序和Applet、异常日志断言和调试、泛型程序设计、集合以及多线程等内容。 全书对Java...

    《Java核心技术 卷Ⅰ:基础知识(原书第8版)》(中文高清PDF) 第一部分(共四部分)

    本书示例程序经过精心地设计,不但具有实用价值,而且易阅读、易理解,可以作为读者自己编写程序的良好开端。  本书试图让读者快速地了解JavaSE6的新特性,并帮助读者有效地从Java早期版本升级到最新版本,或从一种...

    《Java核心技术 卷Ⅰ:基础知识(原书第8版)》(中文高清PDF) 第二部分(共四部分)

    本书示例程序经过精心地设计,不但具有实用价值,而且易阅读、易理解,可以作为读者自己编写程序的良好开端。  本书试图让读者快速地了解JavaSE6的新特性,并帮助读者有效地从Java早期版本升级到最新版本,或从一种...

    《Java核心技术 卷Ⅰ:基础知识(原书第8版)》(中文高清PDF) 第四部分(共四部分)

    本书示例程序经过精心地设计,不但具有实用价值,而且易阅读、易理解,可以作为读者自己编写程序的良好开端。  本书试图让读者快速地了解JavaSE6的新特性,并帮助读者有效地从Java早期版本升级到最新版本,或从一种...

    《Java核心技术 卷Ⅰ:基础知识(原书第8版)》(中文高清PDF) 第三部分(共四部分)

    本书示例程序经过精心地设计,不但具有实用价值,而且易阅读、易理解,可以作为读者自己编写程序的良好开端。  本书试图让读者快速地了解JavaSE6的新特性,并帮助读者有效地从Java早期版本升级到最新版本,或从一种...

    java程序设计教学大纲

    二、掌握JavaSE中基本的API,掌握在集合、线程、输入输出、图形用户界面、网络等方面的应用。三、能够编写有一定规模的应用程序,养成良好的编程习惯,会使用重构、设计模式、单元测试等方式提高代码的质量。 本...

    9天快速掌握java基础视频教程

    带你9天快速掌握 Java课程知识点编排循序渐进,能够将每一个知识点落地到实际案例拒绝“听得懂、不会练、不会敲”并在课程最后通过《学生管理系统》案例整合基础知识,巩固加深知识理解课程亮点:1,趣味性教学,...

    java基础案例与开发详解案例源码全

    12.5.2 使用集合工具类同步化集合类对象324 12.5.3 使用JDK5.0后提供的并发集合类324 12.6 用Timer类调度任务325 12.7 本章练习326 第13章 13.1 java.io.File类328 13.1.1 文件和目录是什么?328 13.1.2 Java对文件...

    LearnHow2J:练习How2J的代码

    JavaSE3 ------ :后续理解框架的基础,包括反射机制,注解。 JavaUse ------ :开发中常用的工具包,包括Log4j,测试Junit等。 网站------:前端内容,包括前端基础内容和流行框架。 JavaEE ------ :JavaEE...

    达内java培训目录

    JDK核心API 语言核心包、异常处理、常用工具包、集合框架。 熟练掌握JDK核心API编程技术;理解API设计原则;具备熟练的阅读API文档的能力;为后续的课程学习打下坚实的语言基础。 JavaSE核心 异常处理、多线程基础...

    大数据培训课程安排.pdf

    第⼆阶段:JavaSE+JavaWeb 1. 难易程度:两颗星 2. 课时量(技术知识点+阶段项⽬任务+综合能⼒):264课时 3. 主要技术包括:java基础语法、java⾯向对象(类、对象、封装、继承、多态、 抽象类、接⼝、常见类、...

    Java经典入门教程pdf完整版

    Javase50发布 2006年12月 Java se60发布 3:Java特点 简单地说,Java具有如下特点:简单的、面向对象、平台无关、多线程、分布式、安全、 晑性能、可靠的、解释型、自动垃圾回收等特点。 这里只解释一下平台无关和...

Global site tag (gtag.js) - Google Analytics