Collection |--List:元素是有序的,元素可以重复。因为该集合体系有索引。 |--ArrayList:底层的数据结构使用的是数组结构。 特点:查询速度很快。但是增删稍慢。线程不同步。 |--LinkedList:底层使用的链表数据结构。 特点:增删速度很快,查询稍慢。线程不同步。 |--Vector:底层是数组数据结构。 特点:线程同步。被ArrayList替代了。因为效率低。 |--Set:元素是无序,元素不可以重复。 |--HashSet:底层数据结构是哈希表。 特点:线程不同步。 HashSet是如何保证元素唯一性的呢? 是通过元素的两个方法,hashCode和equals来完成。 如果元素的HashCode值相同,才会判断equals是否为true。 如果元素的hashcode值不同,不会调用equals。 注意:判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。 |--TreeSet:底层数据结构是二叉树。 可以对Set集合中的元素进行排序。保证元素唯一性的依据:compareTo方法return 0. TreeSet排序的第一种方式:当元素自身具备比较性。元素需要实现Comparable接口,覆盖compareTo方法。这种方式也成为元素的自然顺序,或者叫做默认顺序。 TreeSet的第二种排序方式。当元素自身不具备比较性时,或者具备的比较性不是所需要的。这时就需要让集合自身具备比较性。通过定义比较器,将比较器对象作为参数传递给TreeSet集合的构造函数。定义一个类,实现Comparator接口,覆盖compare方法。 Collection定义了集合框架的共性功能。 添加 add(e); addAll(collection); (add方法的参数类型是Object,以便于接收任意类型对象) 删除 remove(e); removeAll(collection); clear(); 判断 contains(e); isEmpty(); 获取 iterator(); size(); 获取交集 retainAll(); 集合变数组 toArray(); List:(特有方法:凡是可以操作角标的方法都是该体系特有的方法。) 增加 add(index,element); addAll(index,Collection); 删除 remove(index); 修改 set(index,element); 查询 get(index): subList(from,to); listIterator(); int indexOf(obj):获取指定元素的位置。 ListIterator listIterator(); List集合特有的迭代器。ListIterator是Iterator的子接口。该接口只能通过List集合的listIterator方法获取。 LinkedList:特有方法: addFirst(); 将指定元素插入此列表的开头 addLast(); 将指定元素添加到此列表的结尾 getFirst(); 获取此列表的第一个元素,但不删除元素 getLast(); 获取此列表的最后一个元素,但不删除元素 注意:如果集合中没有元素,会出现NoSuchElementException removeFirst(); 获取此列表的第一个元素,但删除元素 removeLast(); 获取此列表的最后一个元素,但删除元素 注意:如果集合中没有元素,会出现NoSuchElementException 在JDK1.6出现了替代方法。 offerFirst(); 将指定元素插入此列表的开头 offerLast(); 将指定元素添加到此列表的结尾 peekFirst(); 获取此列表的第一个元素,但不删除元素 peekLast(); 获取此列表的最后一个元素,但不删除元素 注意:如果集合中没有元素,会返回null。 pollFirst(); 获取此列表的第一个元素,但删除元素 pollLast(); 获取此列表的最后一个元素,但删除元素 注意:如果集合中没有元素,会返回null。 HashSet add(); 向set添加指定元素 clear(); 清除set中所有元素 contains(); 判断set中是否包含某元素 isEmpty(); 判断set是否为空 remove(); 删除set中某元素 size(); 获取set中元素数量 Iterator(); TreeSet 示例:往TreeSet集合中存储自定义对象学生,按照学生的年龄进行排序。 class TreeSetDemo { public static void main(String[] args) { TreeSet ts = new TreeSet(); ts.add(new Student("lisi02",22)); ts.add(new Student("lisi007",20)); ts.add(new Student("lisi09",19)); ts.add(new Student("lisi08",19)); Iterator it = ts.iterator(); while(it.hasNext()) { Student stu = (Student)it.next(); System.out.println(stu.getName()+"..."+stu.getAge()); } } } class Student implements Comparable//该接口强制让学生具备比较性。 { private String name; private int age; Student(String name,int age) { this.name = name; this.age = age; } public int compareTo(Object obj) { if(!(obj instanceof Student)) throw new RuntimeException("不是学生对象"); Student s = (Student)obj; System.out.println(this.name+"....compareto....."+s.name); if(this.age>s.age) return 1; if(this.age==s.age) { return this.name.compareTo(s.name); } return -1; } public String getName() { return name; } public int getAge() { return age; } } |
collection学习日志
最新推荐文章于 2024-04-16 16:43:35 发布