每右移一位就是除以2,左移一位就是乘以2。C语言中,数字是二进制存储的,左移和右移就是变化为2的指数形式。
集合
-
和数组的区别
-
数组长度固定,集合长度不固定。
-
数组可以存储基本类型和引用类型,集合只能存储引用类型。
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
-
双向链表,查询慢,增删快。
泛型
-
好处
-
提高代码的重用性。
-
防止类型转换异常,提高代码的安全性。
泛型类
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<>();