集合框架结构
一、概念:
集合框架由一组用来操作对象的接口组成,不同的接口描述一组不同的数据类型。
二、结构和分类:
object是基类,其下有Map接口和Collection接口,其中Map有
HashMap和TreeMap两个子接口,而Collection有list和set两个接口,list有Hashset和TreeSet,list有ArrayList和LikedList两个子接口。
三、特点:
1.Collection接口存储一组允许重复、无序的对象。
2.set接口继承Collection接口,存储一组唯一(不允许重复)、无序的对象。(类似于数学的集合)
3.List接口继续了Collection接口,存储一组不唯一的(允许重复)、有序(以元素插入的次序来放置元素,不会重新排列)的对象。(与数学的集合概念完全相反)
4.Map接口存储一组成对的键——值对象,提供key(键)到value(值)的映射。Map中的key不要求有序,不允许重复。value同样不要求有序,且允许重复。
*List接口
List接口有序的集合,它继承了Collection的所有的方法,且添加了一些自己的方法。
*List实现类———1.ArrayList
特点:
1.长度可变,类似于一个动态数组。
2.集合中元素的存放顺序于添加顺序一致。
*List实现类——2.LinkedList
若需要频繁地插入和删除,一般用LinkedList,LinkedList类似于数据结构中的双向链表。
package kgy.util; import Java.util.LinkedList; import Java.util.List; publi class StudentLinkedListTest{ public static void main(String[] args) { /*根据班级名称获取班级学生信息*/ List <Student>students=StudnetBiz.getStudents("12网编1"); LinkedList <student>11=new LinkedList <Student>(students); System.out.println("12网编1班共有"+11.size()+"名学生!");//获取学生人数 Student s1=new Student("1","张三",0); Student s2=new Student("2","李四",0); li.addFirst(s1); System.out.println("12网编1班共有"+11.size()+"名学生!"); System.out.println("本班是否有李四这个学生?"+11.contains(s2)); System.out.println("将第一个元素弹栈:"+11.pop()); } } //编译不通过
*Set接口(概念类似于数学中的集合)
Set不包含e1.equals(e2)的元素对e1和e2,并且最多包含一个null元素。 //? ?
若两次插入同一个元素,其实只会存储一个元素,而不是两个。
说明:Set不提供get方法,必须通过迭代器Iterator才可以遍历元素。
package kgy.util; import Java.util.HashSet; import Java.util.Iterator; import Java.util.set; public class StudentHashTest{ public static void main(String[] args) { Set <Student>set=new HashSet<Student>(); Student s1=new Student("1","张三",0); Student s2=new Student("2","李四",0); set.add(s1); set.add(s2); System.out.println("set共有"+set.size()+"名学生!"); set.add(s2); set.add(s1); System.out.println("set共有"+set.size()+"名学生!"); /*遍历set中所有的元素*/ Iterator <Student>it=set.iterator(); while(it.hasNext()){ System.out.println(it.next()); } } }
//编译有问题
//速度上比ArrayList快,它是通过hash码直接索引而来