** Java集合 Collection
**为什么使用集合:
变量只能存一个数据,数组可以存储很多数据,但是长度固定。而集合可以自动扩容。
集合和数组的对比有哪些不同:
1,数组能储存基本和引用类型.而集合只能储存引用类型.
2,数组长度是固定的,而集合是可以自动扩张的.
3.集合底层有很多复杂的数据结构,但是效率上不如数组.
Collection 功能 常用方法
[AppleScript]纯文本查看__复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.util.ArrayList;
import java.util.Collection;
public class TestCollection {
public static void main`(String[] args) {`
/`/`泛型限制输出类型
Collection`<String>/字符串类型里面写是类型只能执行什么类型/` `c` `=` `new` `ArrayList<>();`
/`/`数据添加
c.`add("大力娃");`
c.`add("千里眼顺风耳");`
c.`add("铜头铁臂");`
c.`add("火娃");`
c.`add("水娃");`
c.`add("隐身");`
c.`add("葫芦娃");`
/`/`打印
System.out.println`(c)`;
/`/`判断集合是否为空
System.out.println`(c.isEmpty())`;
/`/`打印集合储存元素的个数
System.out.println`(c.size())`;
/`/`删除指定对象
c.`remove("葫芦娃");`
System.out.println`(c)`;
/`/`清空所有元素
c.clear`();`
System.out.println`(c)`;
}
}
java.lang.Object类: 根类, 所有类的父类
// 成员方法
String?toString() :返回该对象的字符串表示
boolean?equals(Object?obj) :指示其他某个对象是否与此对象"相等"
java.util.Objects类: JDK7 添加. 操作对象的工具类, 提供了空指针安全的方法
// 静态方法
static boolean equals(Object a, Object b): 比较两个对象是否相等
如果2个参数都是null, 返回true
如果其中一个为null, 返回false
如果2个参数都不为null, 则使用第1个参数对象的equals()方法来比较
java.util.Date类: 日期, 表示特定的瞬间, 精确到"毫秒"
// 构造方法
Date(): 创建Date对象, 表示当前系统时间
Date(long date): 创建Date对象, 使用指定的毫秒值作为时间
// 常用成员方法
long getTime(): 获取Date对象中保存的时间毫秒值
void setTime(long time): 修改Date对象的时间
java.text.DateFormat抽象类: 用于格式化和解析时间. 提供了方便的方法
// 常用成员方法 (抽象类不能创建对象, 但可以有非抽象的方法供子类使用)
String format(Date date): 格式化, 从Date对象转换为String对象
Date parse(String source): 解析, 从String对象转换为Date对象
java.text.SimpleDateFormat类
// 构造方法
SimpleDateFormat(String pattern): 用给定的模式和默认语言环境的日期格式符号创建对象
// 常用模式: 可在SimpleDateFormat类中查看
y: 年
M: 月
d: 日
H: 时 (24小时制)
m: 分
s: 秒
E: 星期
D: 年中的天
K: 小时(12小时制)
S: 毫秒
java.util.Calendar抽象类: 代表日历, 提供了不同国家的历法, 封装了很多时间属性
// 静态方法
static Calendar getInstance(): 根据当前系统设置获取合适的Calendar对象, 表示当前系统时间
// 静态成员变量
static int YEAR :年份
static int MONTH :月份. 注意月份数值是 0-11
static int DAY_OF_MONTH :日期
static int HOUR :小时(12小时制)
static int HOUR_OF_DAY :小时(24小时制)
static int MINITE :分钟
static int SECOND :秒
// 非静态成员方法
int get(int field): 获取指定日历字段的值
void set(int field, int value): 修改指定日历字段为指定的值
void add(int field, int amount): 调整指定日历字段的值. 正数增加, 负数减少
Date getTime(): Calendar转Date
void setTime(Date d): Date转Calendar
java.lang.System类: 系统相关功能
// 静态方法
static long currentTimeMillis(): 返回当前系统时间的毫秒值
static void arrayCopy(Object src, int srcPos, Object dest, int destPos, int length): 复制源数组中指定长度个元素到一个新数组中
* Object src: 源数组 (被复制的数组)
* int srcPos: 源数组索引 (从源数组的哪个索引开始复制)
* Object dest: 目标数组 (要复制到哪个数组)
* int destPos: 目标数组索引 (指定目标数组接收元素的索引位置)
* int length: 长度 (要复制的元素个数)
java.lang.StringBuilder类: 可变字符序列, 可以高效拼接字符串. 底层使用数组保存
// 构造方法
StringBuilder(): 构造一个空的StringBuilder容器
StringBuilder(String?str): String转StringBuilder
// 常用方法
StringBuilder?append(任意类型): 添加任意类型数据的字符串形式, 并返回当前对象
String?toString(): 将当前StringBuilder对象转换为String对象
基本类型转为String: 拼接空字符串
"" + 34
true + ""
String转基本类型: 利用包装类的静态方法
static?byte?parseByte(String?s): 将字符串参数转换为对应的byte基本类型
static?short?parseShort(String?s): 将字符串参数转换为对应的short基本类型
static?int?parseInt(String?s): 将字符串参数转换为对应的int基本类型
static?long?parseLong(String?s): 将字符串参数转换为对应的long基本类型
static?float?parseFloat(String?s): 将字符串参数转换为对应的float基本类型
static?double?parseDouble(String?s): 将字符串参数转换为对应的double基本类型
static?boolean?parseBoolean(String?s): 将字符串参数转换为对应的boolean基本类型
java.util.Collection接口:
// 成员方法(子类都会实现)
boolean?add(E?e): 把给定的对象添加到当前集合中
void?clear(): 清空集合中所有的元素
boolean?remove(E?e): 把给定的对象在当前集合中删除
boolean?contains(E?e): 判断当前集合中是否包含给定的对象
boolean?isEmpty(): 判断当前集合是否为空(没有元素)
int?size(): 返回集合中元素的个数
Object[]?toArray(): 把集合中的元素,存储到数组中
增强for, 普通for, 迭代器的区别:
增强for:
优点: 获取元素很方便, 格式简单
缺点: 没有普通for中的索引, 没有迭代器对象可以进行元素的增删
应用场景: 适用于遍历获取数组和集合元素的场景
普通for:
优点: 有索引可以使用, 某些方式可以在遍历过程中增删元素
缺点: 格式繁琐
应用场景: 需要用到索引的场景
迭代器:
优点: 可以使用迭代器对象的方法操作元素
缺点: 格式繁琐
应用场景: 需要在迭代过程中增删元素的场景