Day09

每右移一位就是除以2,左移一位就是乘以2。C语言中,数字是二进制存储的,左移和右移就是变化为2的指数形式。

集合

  • 和数组的区别

  1. 数组长度固定,集合长度不固定。

  2. 数组可以存储基本类型和引用类型,集合只能存储引用类型。

 

Collection使用

add();

remove();

clear();

for (Object obj : collection
) {
   System.out.println(obj);
}                          //遍历

contains();

迭代器(Iterator)

  • hasNext();

  • next();

  • remove(); //删除当前元素。

Iterator it=collection.iterator();
while(it.hasNext()){
   String obj=(String)it.next();
   System.out.println(obj);
}

迭代过程中不能使用collection的删除方法。

 

List子接口

  • 有序、有下标、元素可以重复。

  • (extends Collection)

 

  • contains();

  • isEmpty();

  • indexOf();

  • sublist(fromIndex,toIndex);

ListIterator

  • 和Iterator的区别,ListIterator可以向前或向后遍历,添加,删除,修改元素。

ListIterator lit= list.listIterator();
while(lit.hasNext()){
   System.out.println(lit.nextIndex()+" "+lit.next());
}

while(lit.hasPrevious()){
   System.out.println(lit.previousIndex()+" "+lit.previous());
}

 

List实现类

ArrayList

  • 有下标,有顺序,可重复。

  • 存储结构:数组,查找遍历速度快,增删慢。

 

  • add();

  • remove();

  • contains();

  • isEmpty();

  • indexOf();

 

DEFAULT_CAPACITY = 10;//添加过元素后默认容量。
                    //如果没有向集合中添加过元素,默认容量为0,添加一个元素后 容量为10.
                    //后续每次扩容,扩容为原来的1.5倍。
elementData           //存放元素的数组。
size                 //实际元素的个数。

 

Vector

  • 数组结构实现,查询快,增删慢。

  • 运行效率低,线程安全。

枚举器

Enumeration en = vector.elements();
while (en.hasMoreElements()) {
   String str = (String) en.nextElement();
   System.out.println(str);}

 

LinkedList

  • 双向链表,查询慢,增删快。

 

泛型

  • 好处

  1. 提高代码的重用性。

  2. 防止类型转换异常,提高代码的安全性。

泛型类

public class MyGeneric <T>{
 
}
  • 语法:类名<T>

  • T是类型占位符,表示一种引用类型,如果编写多个使用逗号隔开。<T,E,K>

  • 泛型只能使用引用类型,不同泛型对象之间不能相互赋值。

 

泛型接口

  • 语法:接口名<T>

  • 注意:不能创建泛型静态常量。

 

泛型方法

  • 语法:<T> 返回值类型

 

泛型集合

  • 集合元素的类型必须一致。

 

Set子接口

  • 无序,无下标,元素不可重复。

  • 方法:全部继承于Collection的方法。

Set<String> set=new HashSet<>();

 

Set实现类

HashSet集合的使用

  • 存储结构:哈希表(数组+链表+红黑树)

    存储过程

    1.根据hashcode计算保存的位置,如果此位置为空,则直接保存。如果不为空则执行第二步。

    2.执行equals方法,如果equals方法为true,则认为是重复 。否侧,形成链表。

HashSet<String> hashSet=new HashSet<>();