1.集合
- 必要性:为了使程序能够方便地存储和操纵数目不固定的一组数据。
- Set:集合中的对象不按特定方式排序,并且没有重复对象。它的有些实现类能对集合中的对象按特定方式排序。
List:集合中的对象按索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象。
Map:集合中的每一个元素包含一对键对象和值对象,集合中没有重复的键对象,值对象可以重复。它的有些实现类能对集合中的键对象进行排序。
1.1 Collection和Iterator接口
- Collection接口声明了用于Java集合的通用方法:
- Iterator接口的基本方法:
- hasNext():判断一个元素是否遍历完毕,如果没有,就返回true。
- next():返回下一个元素
- remove():从集合中删除上一个由next()方法返回的元素
1.2 Set(集)
- 两个实现类:HashSet、TreeSet
HashSet子类:LinkedHashSet 类 - 基本用法:
Set<String> set = new HashSet<String>();
String s1 = new String("hello");
set.add(s1);
1.2.1 HashSet
- 当用户定义的类覆盖了Object类的equals()方法和hashCode()方法,当equals()方法返回true时,二者的哈希码也相同。当没有覆盖hashCode()方法时,哈希码不一定一样。所以要覆盖两个方法。
1.2.1 TreeSet
- 默认TreeSet采取自然排序方式,实现Comparable接口,有一个compareTo()方法,当二者相等时,返回0。进行的是升序排列。
注意:此时只能向集合中加入同类型的对象,否则会抛出异常。 - 改变了TreeSet集合中对象的某个属性之后,不会重新排序。
- 客户化排序:Comparator接口的compare方法,相等时返回0。
1.3 List (列表)
- 主要特征:元素以线性方式存储,集合中云讯存放重复对象。
- 主要实现类:ArrayList和LinkedList
ArrayList代表长度可变的数组,允许对元素进行快速随机访问,但是插入与删除元素速度较慢。
LinkedList向List中插入和删除元素的速度较快,随机访问速度则相对较慢。 - 为列表排序:
- sort(List list):对list中的对象进行自然排序。
- sort(List list,Comparator comparator):对List中的对象进行客户化排序,Comparator参数指定排序方式。
1.4 Map(映射)
- 主要方法:put(Object key,Object value)方法向集合中加入元素。
get(Object key,Object value)检索与键对象对应的值对象。 - 主要实现类:HashMap和TreeMap
HashMap按照哈希法来存取键对象,通过equals()方法比较为true时,两个键对象的hashCode()方法返回的哈希码也一样。
TreeMap实现了SortedMap接口,能对键对象进行排序。 - Map的enrtySet()方法返回一个集合,在这个集合中存放了Map.Entry类型的元素,每个Map.Entry对象代表Map中的一对键与值。
1.5用for循环遍历集合
public void print(Set<String> set){
for(String element : set){
System.out.println(element);
}
}
语法”for(Type t:c){···}”,c表示需要遍历的集合,Type表示集合内元素的类型,t引用每次从集合中取出的当前元素。
1.6 Collections 类
含有一部分方法专门用于操纵List类型集合,还有一部分方法可以用于操纵所有Collection类型或Map类型的集合。