- 浏览: 16578 次
- 性别:
- 来自: 广州
最新评论
集合类:
为什么使用集合类?
在面向对象的编程思想中,都是以对象的形式对事物进行描述的,为了保证对象的生命周期,我们需要持有对象
(什么叫做持有对象呢?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_22(TCP的理解)
2012-09-02 19:43 647TCP传输 Socket(客户端)和ServerSocket( ... -
javase_21(DUp的学习-->*)
2012-08-30 00:45 727Socket网络编程 网络协议 IP地址与端口号 本 ... -
javase_20(Awt初步认识)
2012-08-27 01:00 1029多线程的再度复习.class package com.jav ... -
javase_19(多线程)
2012-08-24 23:32 876进程: 进程是具有一定独立功能的程序关于某个数据集合上的一次 ... -
javase_18(回顾与反射机制学习)
2012-08-20 11:58 462AM上午总结: package com.ja ... -
javase_17(IO的总结)
2012-08-20 11:55 1070所有的流在使用完毕时,都需要调用close方法进行关流,释放资 ... -
javase_16(其它流)
2012-08-20 11:52 912IO包中的其他流: 1.打印流 a)PrintWri ... -
javase_16(其它流)
2012-08-20 11:38 0IO包中的其他流: 1.打印流 a)PrintWri ... -
javase_15(File类的应用)
2012-08-19 00:07 902File类:用来将文件或者 ... -
javase_14(字节流)
2012-08-19 00:00 726字节流的抽象基类: InputStream(输入) ... -
javase_13(字符流)
2012-08-19 00:00 624IO(Input OutPut)流 IO流用来处理设备 ... -
javase_12(集合+时间对象)
2012-08-19 00:00 584Map集合 1.Map存储了一系列键值的映射关系2.M ... -
javase_10(String类日常操作)
2012-08-18 09:40 842第一: package com.ja ... -
javase_09(面向对象总结)
2012-08-18 09:39 917Java的环境配置 day01 1. 环 ... -
javase_08(基础面试题)
2012-08-18 09:38 765面试题:请说说抽象类和接口的区别 抽象类,使用abstrac ... -
javase_07(继承与设计模式)
2012-08-18 09:36 646/* 子类对象的实 ... -
javase_06(面向对象)
2012-08-18 09:29 704/* 内部类: .在类中定义的类我们称之为内部类, ... -
javase_05(面向对象)
2012-08-16 11:25 0一.构造函数的定义与 ... -
javase_05(面向对象)
2012-08-16 11:22 829一.构造函数的定义与作用 1.函数的名次与类同名2.没有 ... -
javase_04(面向对象)
2012-08-16 11:21 559面向对象:一种编程思想,使用对象来描述生活中的事物:面向对象的 ...
相关推荐
这个名为"javase_day04_v1_pm_all.zip"的压缩包文件显然是一个教学资源集合,旨在帮助学习者巩固和深化Java SE(标准版)的知识。"day04"的命名可能意味着这是连续课程中的第四天内容,通常涵盖了一些基本概念的深入...
### JavaSE_集合.pdf 关键知识点详解 #### 一、集合与数组的区别 - **固定与动态**: 数组的长度是...以上是关于JavaSE集合框架的核心知识点,这些知识点对于理解Java集合框架的工作原理和高效使用集合类至关重要。
总的来说,这个JavaSE学习资料包将引导开发者全面地学习Java语言的核心特性,掌握基本编程技巧,理解并运用集合框架、IO流等关键概念,从而具备开发高效、稳定的Java应用程序的能力。随着对JavaSE的深入学习,开发者...
`java.util`则包含了集合框架、日期时间处理、随机数生成等工具类。 2. **类(Classes)**:每个类都代表了一种特定的数据结构或功能,如`ArrayList`、`HashMap`等。类定义了属性(fields)和方法(methods),通过...
11. **Java库与API**: - **Java.util**:包含各种实用工具类,如日期时间、集合操作、事件模型等。 - **Java.nio**:非阻塞I/O,提供更高效的数据传输。 12. **JDBC**: - **数据库连接**:使用DriverManager、...
JavaSE(Java Standard Edition)是Java平台的核心部分,主要用于桌面应用程序的开发。在这个"JavaSE_01 源代码"压缩包中,我们很显然会发现一系列与Java基础编程相关的源代码文件,这些文件通常位于`src`目录下。这...
5. **增强的for循环(Enhanced For Loop)**:也称为foreach循环,简化了遍历集合、数组和其他迭代对象的过程,使代码更加简洁。 6. **类型推断(Type Inference)**:在Java 5.0中,类型推断主要体现在泛型的使用...
在JavaSE的学习中,了解Java中常用类的使用对于构建一个健壮的应用程序是至关重要的。本节主要介绍了一些核心的Java包和类,以及Java对象模型中的基础概念。接下来,我们将详细探讨这些知识点。 首先,让我们来看看...
JavaSE是Java标准版,它是Java开发的基础,涵盖了面向对象编程、集合框架、网络编程、I/O流等核心概念。在JavaSE中,线程是一个非常重要的知识点,它关乎程序的并发执行,使得多任务处理成为可能。在这个“JavaSE_...
这份"JavaSE总结文档.rar"包含了一份个人在复习JavaSE时编写的笔记,覆盖了多个主题,旨在巩固和深化对Java基础知识的理解。以下是根据压缩包中的文件名和JavaSE的一般知识体系,整理出的一些关键知识点: 1. **...
Java语言进阶_javase_这部分的学习涵盖了Java标准版(Java SE)的高级特性,主要集中在类、流、文件操作和数据结构等多个方面。以下是对这些主题的详细解释: 1. **Object类**:所有Java类都直接或间接继承自Object...
11. **异常处理**:Java的异常处理机制帮助程序员处理程序运行时可能出现的问题,通过抛出异常(throw)和捕获异常(catch)来确保程序的健壮性。 12. **泛型**:泛型是Java 5引入的新特性,增强了类型安全,允许在...
JavaSE API提供了Java语言的基本库,包括集合框架、I/O流、多线程、网络编程、反射、异常处理等关键功能。例如,`java.util`包提供了集合类如ArrayList和HashMap,`java.io`包支持文件操作和数据流,`java.nio`包...
这个文档是Java开发者的重要参考资料,它详细介绍了Java SE平台中的类库、接口和方法,帮助程序员理解和使用Java进行系统级开发。 Java SE(Standard Edition)是Java平台的核心部分,用于桌面应用开发和服务器端...
JavaSE,即Java标准版,是Java的基础,涵盖了核心的Java编程语言特性和API,包括面向对象编程、集合框架、多线程、I/O流、网络编程等基础知识。而JavaEE,也就是Java企业版,是在JavaSE的基础上增加了用于构建分布式...
这个"JavaSE_Demo"很可能是包含了一系列的Java编程实例,帮助学习者深入理解Java SE的各种特性和功能。以下是对Java SE的一些关键知识点的详细说明: 1. **基础语法**:Java是一种面向对象的编程语言,其基础语法...
JavaSE学习笔记整理涵盖了Java编程语言的基础知识,包括Java的基础概念、数据类型、数组、类和对象的使用、面向对象的高级特性、系统常用类、异常处理以及集合框架。在具体学习这些知识点前,理解Java的基本命令、...
Java SE(标准版)是Java编程语言的基础,它包含了Java的核心库,包括Object类,这是所有Java类的根类。...这些知识点构成了Java SE的基础,理解和掌握它们对于成为一名合格的Java开发者至关重要。
这本书深入浅出地介绍了Java语言的核心概念和技术,旨在帮助读者建立起扎实的Java基础,并理解面向对象编程的核心思想。 1. **Java语言基础**:书中详细讲解了Java的基本语法,包括变量、数据类型、运算符、流程...