当前位置:   article > 正文

【java】集合知识点汇总(持续更新)_java集合知识点梳理

java集合知识点梳理

                                                       图1.0

一、最上层开始(Collection)

1、集合和数组的区别?

A:长度区别

数组固定

集合可变

B:内容区别

数组可以是基本类型,也可以是引用类型

集合只能是引用类型

C:元素内容

数组只能存储同一种类型

集合可以存储不同类型(其实集合一般存储的也是同一种类型)

2、集合的继承体系结构?

        如图1.0

3、Collection的功能概述。

详见jdk文档,搜collection,链接稍后补齐

 

A:添加功能

(1)boolean add(Object object):添加一个元素

(2)boolean addAll(Collection c):添加一个集合的元素。

B:删除功能(remove,removeAll,clear,removeIf(jdk1.8))

(1)void clear():移除所有元素。

(2)boolean remove(Object o):移除一个元素。

(3)boolean removeAll(Collection c):移除一个集合的元素。(是一个还是所有)

(4)removeIf(jdk1.8)

C:判断功能

 (1)boolean contains(Object o):判断集合中是否包含指定的元素。
 (2)boolean containsAll(Collection c):判断集合中是否包含指定的集合元素。(是一个还是所有)
 (3)boolean isEmpty():判断集合是否为空。 

(4)boolean  equals(Object o) 将指定的对象与此集合进行比较以获得相等性。   (jdk1.8)

D:获取功能

Iterator<E> iterator()

E:长度功能

int size():元素的个数。

F:交集(了解)

boolean retainAll(Collection c):两个集合都有的元素?

G:把集合转数组(了解)

Object[] toArray():

4Collection集合的遍历

A:把集合转数组(了解)

B:迭代器(集合专用方式)

5、迭代器

A:是集合的获取元素的方式。

B:是依赖于集合而存在的。

C:迭代器的原理和源码。

a:为什么定义为了一个接口而不是实现类?

b:看了看迭代器的内部类实现。

6、Collection集合的案例(遍历方式 迭代器)

集合的操作步骤:

A:创建集合对象

B:创建元素对象

C:把元素添加到集合

D:遍历集合

  1. A:存储字符串并遍历
  2. import java.util.Collection;
  3. import java.util.ArrayList;
  4. import java.util.Iterator;
  5. public class CollectionDemo {
  6. public static void main(String[] args) {
  7. //创建集合对象
  8. Collection c = new ArrayList();
  9. //创建并添加元素
  10. c.add("hello");
  11. c.add("world");
  12. c.add("java");
  13. //遍历集合
  14. Iterator it = c.iterator();
  15. while(it.hasNext()) {
  16. String s =(String) it.next();
  17. System.out.println(s);
  18. }
  19. }
  20. }
  21. B:存储自定义对象并遍历
  22. public class Student {
  23. private String name;
  24. private int age;
  25. public Student(){}
  26. public Student(String name,int age) {
  27. this.name = name;
  28. this.age = age;
  29. }
  30. //getXxx()/setXxx()
  31. }
  32. import java.util.Collection;
  33. import java.util.ArrayList;
  34. import java.util.Iterator;
  35. public class StudentDemo {
  36. public static void main(String[] args) {
  37. //创建集合对象
  38. Collection c = new ArrayList();
  39. //创建学生对象
  40. Student s1 = new Student("林青霞",27);
  41. Student s2 = new Student("风清扬",30);
  42. Student s3 = new Student("刘意",30);
  43. Student s4 = new Student("武鑫",25);
  44. Student s5 = new Student("刘晓曲",16);
  45. //添加元素
  46. c.add(s1);
  47. c.add(s2);
  48. c.add(s3);
  49. c.add(s4);
  50. c.add(s5);
  51. //遍历集合
  52. Iterator it = c.iterator();
  53. while(it.hasNext()) {
  54. Student s = (Student)it.next();
  55. System.out.println(s.getName()+"---"+s.getAge());
  56. }
  57. }
  58. }

一、List

1、List是Collection的子接口?

特点:有序(存储顺序和取出顺序一致),可重复。

2、List的特有功能:(自己补齐)

A:添加功能

B:删除功能

C:获取功能

D:迭代器功能

E:修改功能

3、List集合的特有遍历功能

A:由size()和get()结合。

B:代码演示

  1. //创建集合对象
  2. List list = new ArrayList();
  3. //创建并添加元素
  4. list.add("hello");
  5. list.add("world");
  6. list.add("java");
  7. //遍历集合
  8. Iterator it = list.iterator();
  9. while(it.hasNext()) {
  10. String s =(String) it.next();
  11. System.out.println(s);
  12. }
  13. System.out.println("----------");
  14. for(int x=0; x<list.size(); x++) {
  15. String s =(String) list.get(x);
  16. System.out.println(s);
  17. }

4、列表迭代器的特有功能;(了解)

可以逆向遍历,但是要先正向遍历,所以无意义,基本不使用。

5、并发修改异常

A:出现的现象

迭代器遍历集合,集合修改集合元素

B:原因

迭代器是依赖于集合的,而集合的改变迭代器并不知道。

C:解决方案

a:迭代器遍历,迭代器修改(ListIterator)

元素添加在刚才迭代的位置

b:集合遍历,集合修改(size()和get())

元素添加在集合的末尾

6、常见数据结构

A:栈 先进后出

B:队列 先进先出

C:数组 查询快,增删慢

D:链表 查询慢,增删快

7、List的子类特点(面试题)

ArrayList

底层数据结构是数组,查询快,增删慢。

线程不安全,效率高。

Vector

底层数据结构是数组,查询快,增删慢。

线程安全,效率低。

LinkedList

底层数据结构是链表,查询慢,增删快。

线程不安全,效率高。

 

到底使用谁呢?看需求?

分析:

要安全吗?

要:Vector(即使要,也不使用这个,后面再说)

不要:ArrayList或者LinkedList

查询多;ArrayList

增删多:LinkedList

 

什么都不知道,就用ArrayList。

8、List集合的案例(遍历方式 迭代器和普通for)

A:存储字符串并遍历

B:存储自定义对象并遍历

Set

1、Set集合的特点

无序,唯一

2、HashSet集合(掌握)

A:底层数据结构是哈希表(是一个元素为链表的数组)

B:哈希表底层依赖两个方法:hashCode()和equals()

  执行顺序:

首先比较哈希值是否相同

相同:继续执行equals()方法

返回true:元素重复了,不添加

返回false:直接把元素添加到集合

不同:就直接把元素添加到集合

C:如何保证元素唯一性的呢?

由hashCode()和equals()保证的

D:开发的时候,代码非常的简单,自动生成即可。

E:HashSet存储字符串并遍历

F:HashSet存储自定义对象并遍历(对象的成员变量值相同即为同一个元素)

3、TreeSet集合

A:底层数据结构是红黑树(是一个自平衡的二叉树)

B:保证元素的排序方式

a:自然排序(元素具备比较性)

让元素所属的类实现Comparable接口

b:比较器排序(集合具备比较性)

让集合构造方法接收Comparator的实现类对象

C:把我们讲过的代码看一遍即可

(4)案例:

A:获取无重复的随机数

B:键盘录入学生按照总分从高到底输出

 

三、Collection集合总结(掌握)

1、针对Collection集合我们到底使用谁呢?(掌握)

唯一吗?

是:Set

排序吗?

是:TreeSet

否:HashSet

如果你知道是Set,但是不知道是哪个Set,就用HashSet。

 

否:List

要安全吗?

是:Vector

否:ArrayList或者LinkedList

查询多:ArrayList

增删多:LinkedList

如果你知道是List,但是不知道是哪个List,就用ArrayList。

 

如果你知道是Collection集合,但是不知道使用谁,就用ArrayList。

 

如果你知道用集合,就用ArrayList。

 

2、:在集合中常见的数据结构(掌握)

ArrayXxx:底层数据结构是数组,查询快,增删慢

LinkedXxx:底层数据结构是链表,查询慢,增删快

HashXxx:底层数据结构是哈希表。依赖两个方法:hashCode()和equals()

TreeXxx:底层数据结构是二叉树。两种方式排序:自然排序和比较器排序

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/973989
推荐阅读
相关标签
  

闽ICP备14008679号