Java学习笔记-Java基础7(集合)

1.Collection:一个接口,定义了集合的相关操作方法,有两个子接口

    -List:可重复集

    -Set:不可重复集

    1)boolean contains(Object o):查看当前集合中是否包含给定的元素o或集合

    2)boolean containsAll(Collection<? extends E> c):查看当前集合中是否包含给定集合中的所有元素

    3)int size():获取当前集合的元素个数

    4)boolean isEmpty():查看集合是否不含有元素

    5)boolean add(Object o):添加元素

    6)boolean addAll(Collection<? extends E> c):添加给定集合中的所有元素,成功则返回true

    7)boolean remove(Object o):从当前集合中删除与给定元素第一个equals比较为true的元素

2.迭代器:统一的遍历集合的方式,过程是:问、取、删(不必须)

    1)Iterator iterator():获取迭代器

    2)boolean hasNext():询问迭代器,遍历集合是否还有元素可以取出

    3)Object next():取值

    4)在使用迭代器遍历集合的过程中,不可以使用集合的方法改变集合元素,但是可以使用迭代器的方法

3.JDK1.5以后推出的增强for循环,新循环,for each,只用来遍历集合,不能替换传统for循环,实质上是迭代器

    语法:

        for(元素类型 e : 集合或数组){循环体}

4.泛型:本质是参数化类型,广泛应用于集合框架中,所有的集合类型都带有泛型参数,迭代器也支持泛型

5.List:

    1)两个常见的实现类为ArrayList(适合随机访问)和LinkedList(适合插入和删除)

    2)常用的方法有基于下标的get和set方法

        -E get(int index):获取集合中指定下标对应的元素,下标从0开始

        -E set(int index, E elment):将给定的元素存入指定的位置,并将原位置的元素返回

    3)void add(int index, E elment):将给定的元素添加到指定位置,原位置及后续元素顺移

    4)修改子集合会影响原集合

6.List和数组的转换:

    1)List的toArray方法用于将集合转换为数组

    2)数组用Arrays.asList(array)方法转换为List集合,不能转换为set集合

    3)通过Arrays转换的集合不能添加新元素

    4)所有的集合都支持一个构造方法,参数传入一个集合,在创建集合时默认包含该集合中的所有元素

7.集合排序:

    1)Collections.sort(集合):可对List集合进行自然排序,集合必须实现了Comparable接口,重写compareTo方法

    2)比较器:当集合Comparable接口,并且实现了比较规则,但是扔不能满足排序需求时使用

    需要重写compare方法

    3)可以使用匿名内部类方式做比较器

8.Queue:队列,特殊的线性表,只能从一端添加(offer)元素,从另一端取出(poll)元素,遵循先进先出的原则

    1)boolean offer(T t):入队方法,将给定的元素添加到队列末尾,添加成功返回true

    2)T poll():获取队首元素,出队操作,获取后集合不在包含该元素

    3)T peek():获取队首元素,不出队

    4)遍历队列是一次性的

9.Deque:Queue的子接口,定义了双端队列,可从两端入队和出队,如果限制一端的操作,则可实现栈(Stack)的数据结构,遵循先进后出的原则

    1)void push(T t):向栈顶压入一个元素,入栈操作

    2)T pop():取出栈顶元素,出栈操作,取出后,该元素从栈中删除

10.Map:该数据结构看起来更像是一个多行两列的表格,每一条数据包含两个信息key:value,其中key不允许重复

    1)V put(K k, V v):将给定的key与对应的value存入map,若key不存在,则返回null,若key已存在,则替换value,返回原有的value值

    2)V get(K k):根据给定的key获取对应的value

    3)boolean containsKey(K k):判断当前map中是否含有给定的key

    4)V remove(K k):根据给定的key删除这一项,返回对应的value

11.重写equals时应该重写hashCode方法,规则如下:若equals比较结果为true,则返回相同的hashCode值,反之不是必须的,但也应当避免。在当前对象的内容(参与hashCode的)没有改变时,多次调用hashCode方法返回值应该一样

12.遍历Map的三种方式:

    1)遍历key:Set<K> keySet()----该方法可以获取Map中所有的key,并将之存入一个set集合中,然后遍历该集合即可

    2)遍历键值对:Set<Entry<K k, V v>> entrySet()----该方法可以获取Map中所有的键值对,并将每个键值对以Entry的形式存入一个set集合中,然后遍历该集合即可

    3)遍历value:eg:Collection<Integer> values = map.values();然后遍历values即可

猜你喜欢

转载自blog.csdn.net/justdi0209/article/details/80182569
今日推荐