首页 > 代码库 > ACCP8.0 java课程第二学期-关于集合框架

ACCP8.0 java课程第二学期-关于集合框架

本章重点
  掌握ArrayList LinkedList HashMap与泛型集合

本章难点
  泛型的理解

一 关于集合
1)如果写程序时不知道运行时需要多少对象,或者需要更复杂的方式存储对象时,考虑使用集合它位于java.util包下
2)集合框架包含接口,实现类,和相关算法
3)Collection接口存储一组不唯一,无序的对象
4)Set接口继承Collection接口,存储一组唯一无序的对象
5)List接口继承Collection接口,存储一组不唯一有序的对象
6)Map接口存储一组键值对的对象,key不能重复,value可以重复
7)Iterator接口是负责定义访问和遍历元素的接口

二 ArrayList与LinkedList
1)ArrayList是对数组进行了封装,实现长度可变的数组,优点是访问元素效率比较高
2)LinkedList是内部数据结构是链表,在操作元素上效率比较高,对于访问元素效率低于ArrayList
3)注意ArrayList在移除元素时,会重新改变内部元素的位置
4)ArrayList常用方法:
boolean add(Object o);//索引从0开始
void add(int index,Object o)//必须在0和元素列表个数之间
int size();//返回集合列表中元素个数
boolean contains(Object o);//判断列表是否包含某一个元素
Object get(int index);//获取指定位置的元素
boolean remove(Object o);//移除元素
Object remove(int index);//移除指定位置的元素
boolean retainAll(Collection<?> c);//保留集合的共有元素

package org.lyrk.accp8.s2.chapter.ch06;

import java.util.*;

/**
 * Created by niechen on 17/5/25.
 */
public class Main {

    public static void main(String[] args) {
        //ListIterator listIterator =
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        int size = list.size();
        //注意代码此处会报错,因为移除元素后内部数据会发生变化
        for (int i = 0; i < size; i++) {
            list.remove(i);
        }
list.add(5,3);//此处会报错,注意插入位置
      } }

 



5)LinkedList常用方法:
void addFirst(Object o);//在列表的首部添加元素
void addLast(Object o);//在列表的末尾添加元素
Object getFirst();//返回列表中第一个元素
Object getLast();//返回列表中的最后一个元素
Object removeFirst();//删除并返回列表中的第一个元素
Object removeLast();//删除并返回列表中的最后一个元素

三.HashMap与HashTable(面试题)
1) HashMap继承自AbstractMap类,HashTable继承自Dictionary类
2) HashTable线程安全的,HashMap非线程安全
3) HashTable不允许null值(包括key与value),HashMap则可以
4)HashMap常用方法:
int size();//集合内的个数
boolean containsKey(Object key);//是否包含key
boolean containsValue(Object value);//是否包含对应的值
V get(Object key);//根据key获取value
V put(K key, V value);//向map集合里添加元素
V remove(Object key);//根据键移除元素
Set<Map.Entry<K, V>> entrySet();//遍历Map时使用此方法效率高

四.关于Iterator
1) Iterator主要用于遍历集合元素时用,一般情况下实现Collection接口的可以直接用iterator()方法拿到迭代器对象
2) 常用方法:boolean hasNext();//判断是否有下一个元素
Object next();//返回下个元素

五.Set集合
1)Set集合不可重复且没有顺序,因此可以用于去除集合中重复元素
2)Set集合可以用Iterator和增强for循环进行遍历

六.关于泛型
1)泛型可以限制集合的类型,增强安全性。
2)泛型可以定义一个模板
3)方法中的泛型

七.关于基本类型的包装类
1)基本类型都有其对应的包装类型,简单理解就是将基本类型包装成对象,因此他们就有相应的属性和方法
2) 通常情况下,基本类型的首字母大写就变成其包装类,char,int类型除外
3) int->Integer double->Double float->Float short->Short boolean->Boolean long->Long
char->Character byte->Byte


ACCP8.0 java课程第二学期-关于集合框架