五。集合框架
1.1概念: 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作。就对对象进行存储,集合就是存储对象。
集合Collection
|-----List
|-----Set
1.2共性方法:
创建:Arraylist al=new Arraylist();
添加:al.add();向集合添加元素。
获取:al.size();获取集合元素的个数。
打印:sap(al);
删除:al.remove();去除指定元素。
al.clear();清除集合中的所用元素。
判断:al.contains();判断是否包含指定元素。
al.isEmpty();判断集合元素是否为空。
其他:al.retainAll();取两集合的交集,如果没有交集,则返回空。
1.3迭代器
迭代器就是集合的取出元素的方式。
格式:Iterator it=al.iterator();
while(it.hasNext())
{
it.next();
}
1.4list集合的共性方法
list集合元素是有序的,可以重复;而Set集合元素是无序的,不可以重复。
增加:add();在指定位置添加指定一个或多个元素。
删除:remove();删除指定位置的元素。
修改:set();将指定位置的元素用指定元素修改掉。
查找:get();查找指定位置的元素。
获取:sublist();获取指定位置之间的元素。
1.5Listiterator
listiterator是Iterator的子接口,是List集合的特有方法。
在迭代时,不可以通过集合对象的方法操作集合中的元素,因为会发生异常。
所以,在迭代时,只能用迭代器的方法操作元素,又因iterator的方法有限,需使用特有迭代器。
1.6linkedList
特有方法:addFirst,addLast
getFirst,getLast
removeFirst,removeLast
1.6版本后的方法是offerFirst,offerLast
peekFirst,peekLast
pollFirst,pollLast
1.7HashSet
HashSet存储自定义对象:
去除相同元素,如果元素的HashCode相同,才会判断equals方法是否为true。
HashSet判断和删除的依据是元素的HashCode方法和equals方法。
1.8TreeSet
TreeSet可以对集合Set中的元素排序。
TreeSet排序的第一种方式:让元素自身具备比较性,元素需要实现Comparable 借口,复写CompareTo方法,这种方式成为元素的自然排序,叫做默认排序。
TreeSet排序的第二种方式:当元素自身不具备比较性时,或者具备的比较性是不需要的,这时就需要让集合自身具备比较性。
比较器:定义一个类,实现Comparator借口,覆盖compare方法。
1.9泛型
泛型的好处:1.将运行时期出现的问题转移到编译时期,方便程序员解决问题。
2.避免了强制转换类型的麻烦。
格式:通过<>来定义要操作的引用数据类型。
泛型类:class Utils<QQ>
{
}
Utils<QQ> s=new Utils<QQ>();
另外,还有泛型方法,泛型接口,泛型静态方法等。泛型定义<>放在返回值前面,修饰符后面。
泛型限定:? extends E(上限) ;? super E(下限)。另外,?叫通配符,还可以理解为占位符。
1.10Map
Map集合是存储键值对,一对一对往里存,而且要保证唯一性。
Map集合的方法:
删除:void clear();
V remove(key);
判断:boolean containsValue(value);
boolean containsKey(key);
boolean isEmpty();
获取:int size();
V get(key);
Collection<T> values();
添加:V put(k,v);
void putAll(Map<? extends k,? extends v> m);
Map子类对象:
HashTable:哈希表,不可以使用null值或null键,该集合是同步的。
HashMap:哈希表,可以使用null值或null键,该集合是不同步的。
TreeMap:二叉树,不同步。可以用于给Map集合中的键进行排序。
注:添加元素时,如果出现相同的键,那么后添加的值会覆盖原有键值对,并用put方法会返回被覆盖的值。
Map集合的两种去除方式:
keySet:先将集合中的键都取出来,然后通过迭代器去除所对应的值。
entrySet:先取出集合中的映射关系,然后通过迭代器取出所对应的键与值。
1.11集合框架的工具类
Collections-Sort:按照默认排序
Sort();按照指定比较器比较排序。
Collections-Max();获取集合中的最大值。
Max();按照指定比较器比较出最大值。
Collections-fill();将集合中的所有元素全部替换为指定元素。
replaceAll();将集合中的指定元素用新的元素替换掉。
set();根据指定位置用新元素替换。
Collections-reverse();将指定集合中的元素反转。
reverseOrder();将指定集合按照原比较顺序的相反顺序排序。即反转排序规则。
Collections-swap();将指定位置的两元素置换。
shuffle();随机置换。
Arrays:用来操作数组的工具类,里面都是静态方法。
Arrays-aslist:将数组变成list集合。
好处:可以使用集合的思想和方法来操作数组中的元素。但不可以使用集合的增删方法,因为数组的长度是固定的。
另外,集合变数组的好处是为了对元素的操作。
1.12增强for循环
高级for循环格式:for(数据类型 变量名 :被遍历的集合或数组)
{}
限制:高级for循环对集合进行遍历,只能获取元素,不能对集合进行操作。
1.13可变参数
格式 : 数据类型 。。。变量名
使用时要注意可变参数一定要定义在参数列表的最后面。
1.14静态导入
格式:import static Java.util.Arrays.*;
注意:当类名重名时,要指定具体的包名。
当方法名重名时,需指定具备所属的类或对象。