一、集合概述
java中有好多集合:List,ArrayList,Vector,HashSetTreeSet,它们之间的区别,java集合的框架等等总是很模糊,称有时间总结下。
当数据多了需要存储,需要容器,而数据的个数不确定,无法使用数组,这时可以使用Java中另一个容器——集合,位于java.util 。
1、集合和数组的区别?
① 数组的长度是固定的。
集合的长度是可变的。
②数组中存储的是同一类型的元素,可以存储基本数据类型值。
集合存储的都是对象。而且对象的类型可以不一致。
2、什么时候使用集合呢?
当对象多的时候,先进行存储。
3、集合体系框架图
二、Collection接口
Collection接口:单列集合类的根接口
1、List接口:有序的,带索引的,通过索引就可以精确的操作集合来&源gao@dai!ma.com搞$代^码%网中的元素,允许出现重复的元素。
使用List解决插入元素的问题,因为add方法追加。
List接口的特有方法,全部是围绕索引来定义的。
List获取元素的方式有两种:一种是迭代,一种是遍历+get方法。
List接口是支持对元素进行curd增删改查动作的。
①Vector:可以增长的数组结构。同步的。效率非常低,已被ArrayList替代。
②ArrayList:是数组结构,长度是可变的(原理创建新数组+复制数组),查询速度很快,增删较慢,不同步的。(应用广)。
示例:
1 public class Example01 { 2 public static void main(String[] args) { 3 ArrayList list = new ArrayList(); //创建ArrayList集合 4 list.add("stu1"); 5 list.add("stu2"); 6 list.add("stu3"); 7 list.add("stu4"); 8 System.out.println("集合的长度:"+list.size());//获得集合中元素的个数 9 System.out.println("集合的第二个元素:"+list.get(1));//取出并打印指定位置的元素10 }11 }
运行结果:
集合的长度:4集合的第二个元素:stu2
③LinktedList:是链接结构,增删速度快,查询速度慢。可用于实现堆栈,队列。特有:围绕头和为展开定义的。
堆栈:先进后出First in Last Out FILO 可以理解为手枪弹夹
队列:先进先出First in First Out FILO 可以理解为排队买票
常用方法示例:
1 public class Example02 { 2 public static void main(String[] args) { 3 LinkedList link = new LinkedList();//创建LinkedList集合 4 link.add("stu1"); 5 link.add("stu2"); 6 link.add("stu3"); 7 link.add("stu4"); 8 System.out.println(link.toString());//取出元素并打印该集合中的元素 9 link.add(3,"Student"); //向该集合中的指定位置插入元素10 link.addFirst("First"); //向该集合第一个位置插入元素11 link.addLast("Last"); //向该集合第一个位置插入元素12 System.out.println(link);13 System.out.println(link.getFirst()); //取出该集合第一个元素14 System.out.println(link.getLast()); //取出该集合最后一个个元素15 link.remove(3); //移除该集合中指定位置的元素16 link.removeFirst(); //移除该集合中第一个元素17 link.removeLast(); //移除该集合中最后一个个元素18 System.out.println(link);19 }20 }