Java面向对象编程——集合框架
学习Java语言,必须掌握Java集合类的使用。Java集合类时实现数据结构的容器,专门存储Java类的对象
集合框架的概念:
数据机构与算法时程序开发中非常重要的知识点,这些知识点可以有效地提高程序运行的速度和效率。Java集合类就是把数据结构和算法根据不同的需求进行实现,让陈鼓型元可以开发出可靠,稳定并高效的程序。
引入集合框架
面向对象语言对事务的体现都是以对象的形似,所以为了方便对多个对象的操作,就可以将对象进行存储,集合就是存储对象最常用的一种方式。
集合和之前的数组的区别
数组 | 集合 | |
---|---|---|
长度 | 长度是固定的 | 长度是可变的 |
存储对象 | 可以存储基本数据类型,也可以存储对象的引用 | 只能用于存储对象的引用 |
对象类性 | 对象必须时相同类型的数据 | 对象可以是不同类型的数据 |
从以上分析中可以看出,数组在处理一些问题时存在明显的缺陷,而集合完全弥补了数组的缺陷,它比数组更灵活耿实用,可大大提高软件的开发效率,并且不同的集合可使用与不同的场合。如果写程序时并不知道程序运行时会需要多少对象,或者需要更复杂的方式存储对象,可以考虑使用Java集合来解决问题
Java集合框架包含的内容
(1):集合框架是为了表示和操作集合而规定的一种统一的标准体系结构,由 三大块内容组成
1):接口:表示集合的抽象数据类型,比如 Collection、List 、Set、Map等
2):具体类:集合框架中接口的具体实现,如ArrayList等
3):算法:在一个实现了某个集合框架中的接口的对象身上完成某种有用的计算方法,如查找、排序等。
(2):接口还有两大根接口: Collection和Mao.Collection下又有三个分支:List、Set 和 Queue 。除此之外,还有为操作集合开发的两个工具类。
1):Collection :包含有关集合的静态方法
2):Arrays:包含了各种数组操作的静态方法
List接口
List接口继承了Collection接口,称为有序集合,可以精确控制列表中的每一个元素的插入位置。通过整数索引获取列表中的元素。List与匈奴出现重复的值。实现List接口的常用类有两个,分别是:ArrayList 和 LinkedList。
ArrayList集合类
ArrayList 支持可随需要而增长的动态数组,在Java数组中,长度是固定的,因此在数组被创建后,不能修改长度,这意味着开发者需要知道数组的长度。但在一般情况下,只有在运行时在知道数组长度。为了解决这个问题,Arratlist因此而生
数组中的每一个元素,都存储在内存单元中,并且元素之间紧密排列,既不能打乱元素的存储顺序,也不能跳过某个存储单元进行存储。底层是使用数组实现的,所以查询速度块,增删速度慢。
案例代码:
package list;
import java.util.ArrayList;
/**
* @version 1.0
* @author: jiazhihao
* @date: 2021-05-06 17:11
*/
//数组扩容的代码;
/*private Object[] grow(int minCapacity) {
int oldCapacity = elementData.length;
if (oldCapacity > 0 || elementData != DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {
int newCapacity = ArraysSupport.newLength(oldCapacity,
minCapacity - oldCapacity, *//* minimum growth *//*
oldCapacity >> 1 *//* preferred growth *//*);
return elementData = Arrays.copyOf(elementData, newCapacity);
} else {
return elementData = new Object[Math.max(DEFAULT_CAPACITY, minCapacity)];
}
}*/
//查询多用这个
public class ArraylistDemo01 {
public static void main(String[] args) {
String [] array01 = new String[10];
array01[0] = "zhangsan";
array01[2] = "wangwu";
array01[1] = "lisi";
ArrayList<Object> list01 = new ArrayList<>(100); // 数组的方式实现的
// 数组列表 初始值为10
//initialCapacoty 初始值
// private static final int DEFAULT_CAPACITY = 10;
// DEFAULTCAPACITY_EMPTY_ELEMENTDATA 默认的容量
//1:增加的操作
list01.add("zhangsan");
list01.add("lisi");
list01.add("wangwu");
System.out.println(list01);
//2:删除
list01.remove(1);
// remove 移除
System.out.println(list01);
// 3:修改
String v = (String) list01.set(1