java -复习

  1. 数组存储数据方面的特点和弊端
  1. 数组一旦初始化,其长度就是确定的。
  2. 数组中的多个元素是依次紧密排列的,有序的,可重复的
  3. (优点)数组一旦初始化完成,其元素的类型就是确定的。不是此类型的元素,就不能添加到此数组中。int[] arr = new int[10];arr[o] = 1;
  4. arr[1] =“AA”;//编译报错
  5. Object[] arr1 = new Object[10];
  6. arr1[o] = new String();
  7. arr1[1] = new Date();
  8. (优点)元素的类型既可以是基本数据类型,也可以是引用数据类型。
  9. 数组存储多个数据方面的弊端:
  10. 数组一旦初始化,其长度就不可变了。
  11. 数组中存储数据特点的单一性。对于无序的、不可重复的场景的多个数据就无能为力了。
  12. 数组中可用的方法、属性都极少。具体的需求,都需要自己来组织相关的代码逻辑。
  13. 针对于数组中元素的删除、插入操作,性能较差。

  1. 集合框架概述
  1. java.util.Collection:存储一个一个的数据
  2. -----子接口:List :存储有序的、可重复的数据 (“动态"数组)
  3. l---- ArrayList(主要实现类)、LinkedList、Vector
  4. -----子接口,set :存储无序的、不可重复的数据(高中学习的集合)---- HashSet(主要实现类)、LinkedHashSet、TreeSet
  5. java.util.Map:存储一对一对的数据(key-value键值对,(x1,y1)、(x2,y2) --> y=f(x),类似于高中的函数)---- HashMap(主要实现类)、LinkedHashMap、TreeMap、Hashtable、Properties

  1. Collection的常用方法
  1. Add(Object obj);
  2. addAll(Collection coll);
  3. Clear();
  4. isEmpty();
  5. Size();
  6. Contains(Object obj);
  7. ContainsAll(Collection coll)
  8. retainAll(Collection coll)
  9. Remove(Object obj)
  10. RemoveAll(COllection coll)
  11. hashCode()
  12. Equals()
  13. toArray()
  14. Iterator()---->引出迭代器接口

向Collection中添加元素的要求:

>要求元素所属的类一定要重写equals()!

集合与数组的相互转换:

集合 ---> 数组:toArray()

数组 ---> 集合:调用Arrays的静态方法asList(object ... objs)

3.2 迭代器端口:

  1. 设计模式的一种
  2. 迭代器不负责数据的存储;负责对集合类的遍历

2.何获取迭代器(Iterator)对象?

Iterator iterator = coll.iterator();

3.如何实现遍历(代码实现)

//hasNext():判断是否还有下一个元素

        while(iterator.hasNext()){

            //next():@指针下移 @将下移以后集合位置上的元素返回

            System.out.println(iterator.next());

        }

  1. Collection的子接口: List

常用方法;

Add(Object obj)

addAll(Collection coll)

Remove(Object obj)

Remov(int index)

Set(int index ,Onject ele)

Get(int index)

Add(int index,Object ele)

addALL(int index,Collection eles)

长度

Size()

遍历

Itertor(),使用迭代器进行遍历

争强for循环

一般的for循环

List及其实现类特点

java.util.Collection:存储一个一个的数据

|-----子接口:List:存储有序的、可重复的数据 ("动态"数组)

1|--- ArrayList:List的主要实现类:线程不安全、效率高:底层使用Object[]数组储存

在添加数据、查找数据时,效率高;插入、删除数据时效率低

|----LinkedList底层使用双向链表的方式进行储存

在添加数据、查找数据时,效率低;插入、删除数据时效率高

|---Vector:List的古老实现类:线程安全的、效率低;

  1. Collection的子接口: Set
  1. Set中的常用的方法都是Collection中声明的方法,没有新增的方法
  2. 。常见的实现类的对比
  3. java.util.Collection:存储一个一个的数据
    1. -----子接口:Set:存储无序的、不可重复的数据(高中学习的集合)
    2. ---- HashSet:主要实现类,底层使用的是HashMap,即使用数组+单向链表+红黑树结构进行存储。 (jdk8
    3. ---- LinkedHashSet: 是HashSet的子类,在现有的数组+单向链表+红黑树结构的基础上,又添加了一组双向链表,用于记录添加元素的先后顺序。即,我们可以按照添加元素的顺
    4. 实现遍历。便于频繁的查询操作。
    5. ---- TreeSet:底层使用红黑树存储。可以按照添加的元素的指定的属性的大小顺序进行遍历。

  1. Map接口
  1. 它创建了一个 TreeMap 实例并使用自定义的 Comparator 对象来进行排序。TreeMap 是一个基于红黑树实现的有序映射,你可以用自定义的 Comparator 来定义元素之间的排序规则。

  1. >底层使用红黑树存储;
  2. >可以按照添加的key-value中的key元素的指定的属性的大小顺序进行遍历
  3. >需要考虑使用1.自然排序 2.定制排序。

>要求:向TreeMap中添加的key必须是同一个类型的对象。

你可能感兴趣的:(python,java,数据结构)