JAVA容器系列专题
【JAVA容器概论】
【JAVA容器-List接口容器详解】
【JAVA容器-迭代器Iterator详解】
【JAVA容器-Set接口容器详解】
【JAVA容器-Map接口容器详解】
【JAVA容器演进及应用(含对Disruptor的浅解)】
数据结构
就是在计算机的缓存,内存,硬盘 如何组织管理数据的。重点在结构上,是按照什么结构来组织管理我们的数据。
数据结构分为:
(1)逻辑结构 : --> 思想上的结构 --> 卧室,厨房,卫生间 —> 线性表(数组,链表),图,树,栈,队列
(2)物理结构 : --> 真实结构 --> 钢筋混凝土+牛顿力学 ------> 紧密结构(顺序结构),跳转结构(链式结构)
逻辑结构和物理结构的关系
线性表逻辑结构中,对应的物理结构为【紧密结构】的典型就是【数组】:
线性表逻辑结构中,对应的物理结构为【跳转结构】的典型就是【链表】:
集合
引入原因
-
数组,集合都是对多个数据进行存储操作的,简称为容器。
PS:这里的存储指的是内存层面的存储,而不是持久化存储(.txt,.avi,.jpg,数据库)。 -
【数组】特点:
(1)数组一旦指定了长度,那么长度就被确定了,不可以更改。int[] arr = new int[6];
(2)数组一旦声明了类型以后,数组中只能存放这个类型的数据。数组中只能存放同一种类型的数据
。int[] arr,String[] s,double[] d… -
【数组】缺点:
(1)数组一旦指定了长度,那么长度就被确定了,不可以更改。
(2)删除,增加元素 效率低。
(3)数组中实际元素的数量是没有办法获取的,没有提供对应的方法或者属性来获取
(4)数组存储:有序,可重复 ,对于无序的,不可重复的需求,数组不能满足要求。
集合宏观结构
Collection接口
常用方法
增加:add(E e) addAll(Collection<? extends E> c)
删除:clear() remove(Object o)
查看:iterator() size()
判断:contains(Object o) equals(Object o) isEmpty()
public class TestCollection {
//这是main方法,程序的入口
public static void main(String[] args) {
//创建对象:接口不能创建对象,利用实现类创建对象:
Collection col = new ArrayList();
//调用方法:
//集合有一个特点:只能存放引用数据类型的数据,不能是基本数据类型
//基本数据类型自动装箱,对应包装类。int--->Integer
col.add(18);
col.add(12);
col.add(11);
col.add(17);
System.out.println(col);
List list = Arrays.asList(new Integer[]{11, 15, 3, 7, 1});
col.addAll(list);//将另一个集合添加入col中
System.out.println(col);
//col.clear();清空集合
System.out.println(col);
System.out.println("集合中元素的数量为:"+col.size());
System.out.println("集合是否为空:"+col.isEmpty());
boolean isRemove = col.remove(15);
System.out.println(col);
System.out.println("集合中数据是否被删除:"+isRemove);
Collection col2 = new ArrayList();
col2.add(18);
col2.add(12);
col2.add(11);
col2.add(17);
Collection col3 = new ArrayList();
col3.add(18);
col3.add(12);
col3.add(11);
col3.add(17);
System.out.println(col2.equals(col3));
System.out.println(col2==col3);//地址一定不相等 false
System.out.println("是否包含元素:"+col3.contains(117));
}
}
集合遍历方式
public class TestQuery {
//这是main方法,程序的入口
public static void main(String[] args) {
Collection col = new ArrayList();
col.add(18);
col.add(12);
col.add(11);
col.add(17);
col.add("abc");
col.add(9.8);
//对集合遍历(对集合中元素进行查看)
//方式1:普通for循环,不可用,因为不能通过索引获取到其中的元素
/*for(int i= 0;i<col.size();i++){
col.
}*/
//方式2:增强for循环
for(Object o:col){
System.out.println(o);
}
System.out.println("------------------------");
//方式3:iterator()
Iterator it = col.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}