Java之集合(容器)的简单介绍

集合是什么?我估计大家都会想到数组,数组不就是一个容器,并且是在堆内存中开辟的一系列连续地址的存储空间。切记数组中所存储的元素都是同一类型,目的就是为了统一管理。有的人还会说,集合不就是数学中我们所学到的集合吗?不就是为了存放东西,方便统一管理吗?对的没错。但是我今天带大家了解的集合非同小可,人称万金油。听这个名字都比较霸气,更何况它所能实现的东西,更是非同凡响。小编接下来就大家来看看今天所要给大家介绍的集合。

 那今天所介绍的集合到底是什么?

集合是一个存放对象的引用的容器。

那么集合与数组的区别是什么?

  1.  数组和集合都是Java中的容器
  2. 数组的长度是固定的,集合的长度是可变的
  3. 数组只能存储相同数据类型的数据,这里的数据类型可以是基本数据类型,还可以是引用数据类型
  4. 集合可以存储不同数据类型的对象的引用(但一般情况下,我们会使用泛型来约定只使用一种数据类型),但是不能存储基本数据类型

 但是在Java中每一种基本数据类型都有与其对应的包装类:

  1. byte——Byte
  2. short——Short
  3. int——Integer
  4. long——Long
  5. float——Float
  6. double——Double
  7. char——Character
  8. boolean——Boolean

集合的分类:List集合、Set集合、Map集合

如下图所示集合的继承关系:

1、List集合

 List 接口实现了 Collection 接口,它主要有两个实现类:ArrayList 类和 LinkedList 类。在 List 集合中允许出现重复元素。与 Set 集合不同的是,在 List 集合中的元素是有序的,可以根据索引位置来检索 List 集合中的元素,第一个添加到 List 集合中的元素的索引为 0,第二个为 1,依此类推。

ArrayList 类 ——该类提供了快速的基于索引的成员访问方式,对尾部成员的增加和删除支持较好。使用 ArrayList 创建的集合,允许对集合中的元素进行快速的随机访问,不过,向 ArrayList 中插入与删除元素的速度相对较慢。

接下来就用代码简单的介绍一下ArrayList 类中的方法:

public class newArrayList<E> {
	private ArrayList<E> al=new ArrayList<E>();
	
	public static void main(String[] args) {
		/**
		 * 创建了一个ArrayList集合——有序,可以利用角标来访问该集合中的元素
		 */
		ArrayList<Integer> al=new ArrayList<Integer>();
		for(int i=1;i<=10;i++){
			/**
			 * add函数是添加一个元素
			 * 并且返回值是一个boolean类型
			 * 如果添加成功,返回true,否则为false
			 */
			al.add(i);
		}
		/**
		 * 上面的元素添加成功
		 */
		System.out.println(al);//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
		/**
		 * 当add函数有两个参数时,表示的是:第一个参数为指定的角标,第一个参数为是在指定角标出添加的元素
		 */
		al.add(0, 0);
		System.out.println(al);//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
		/**
		 * size函数是指该集合中的有效元素的个数
		 * 返回值为int
		 */
		System.out.println(al.size());
		ArrayList<Integer> c=new ArrayList<Integer>();
		for(int i=-3;i<=-1;i++){
			c.add(i);
		}
		/**
		 * addAll该函数有两个参数,表示的是在指定的角标出添加另一个集合对象中大的元素
		 * 返回值是一个Boolean类型
		 */
		al.addAll(0, c);
		System.out.println(al);
		
		/**
		 * get函数是利用下标索引访问集合中的元素
		 * 返回值是一个泛型,在创建ArrayList集合时所指定
		 */
		System.out.println(al.get(13));
		/**
		 * subList该函数返回的是一个集合,相当于就是在原来集合中所截取一定个数的元素,当做返回值
		 */
		System.out.println(al.subList(0, 4));
		System.out.println(al);
		/**
		 * clear函数是将该集合中的元素清空
		 */
		al.clear();
		/**
		 * isEmpty函数是判断该集合中元素是否为空
		 * 返回值为boolean型
		 */
		System.out.println(al.isEmpty());
	}
}

LinkedList 类——LinkedList 类采用链表结构保存对象,这种结构的优点是便于向集合中插入或者删除元素。需要频繁向集合中插入和删除元素时,使用 LinkedList 类比 ArrayList 类效果高,但是 LinkedList 类随机访问元素的速度则相对较慢。这里的随机访问是指检索集合中特定索引位置的元素。

 接下来就用代码简单的介绍一下LinkedList类中的方法:

public class newLinkedList {
	/**
	 * 先是创建一个LinkedList集合——该集合也是有序的
	 * 也可以通过角标访问其元素
	 */
	private static LinkedList<Integer> l = new LinkedList<Integer>();
	public static void main(String[] args) {
		/*
		 * 1、先是当做列表来看
		 */
		
		/**
		 * add函数是给列表添加元素
		 */
		for(int i=1;i<=10;i++){
			l.add(i);
		}
		System.out.println(l);
		/**
		 * add函数有两个参数,表示的是在指定角标出添加元素
		 * 无返回值
		 */
		l.add(0, 0);
		System.out.println(l);
		/**
		 * 在该列表的头添加一个元素
		 */
		l.addFirst(-1);
		System.out.println(l);
		/**
		 * 在列表的尾处添加一个元素
		 */
		l.addLast(11);
		System.out.println(l);
		/**
		 * 在列表的头和尾各删除一个元素
		 */
		l.removeFirst();
		l.removeFirst();
		l.removeLast();
		l.removeLast();
		System.out.println(l);
		/**
		 * 打印该集合的有效元素的个数
		 */
		System.out.println(l.size());
		
		/*
		 * 2、该集合当做队列时
		 * 因为队列要遵循先进先出
		 * 所以当作队列时只能在对尾添加元素
		 * 在对头删除元素
		 */
		l.clear();
		System.out.println(l.isEmpty());
		for(int i=1;i<=10;i++){
			l.offer(i);//队尾
		}
		System.out.println(l);
		/**
		 * 出队列
		 */
		for(int i=1;i<=5;i++){
			l.poll();
		}
		System.out.println(l);
		/**
		 * 访问对头元素
		 */
		System.out.println(l.peekFirst());
		
		/*
		 * 3、当该集合当作栈时
		 * 因为栈是先进后出
		 * 因此栈只能从头入栈,从头弹栈
		 */
		l.clear();
		System.out.println(l.isEmpty());
		for (int i = 1; i <= 10; i++) {
			/**
			 * 入栈
			 */
			l.push(i);
		}
		System.out.println(l);
		/**
		 * 弹栈
		 */
		for(int i=1;i<=5;i++){
			l.pop();
		}
		System.out.println(l);
		/**
		 * 访问栈顶元素
		 */
		System.out.println(l.peek());
	}
}

未完待续··········

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值