?ArrayList集合:
? 1.默认初始化容量是10(底层先创建了一个长度为0的数组,当添加第一个元素的时候,初始化容量是10)
? 2.集合底层是一个Object数组
? 3.构造方法:
?????? new ArrayList();
?????? new ArrayList(20);
? 4.ArrayList集合的扩容
?????? 增长到原容量的1.5倍
?????? ArrayList集合底层是数组,怎么优化?
?????? 尽可能少的扩容,因为数组扩容效率比较低,建议在使用ArrayList集合的时候预估计元素的个数,给定一个初始化容量
?? 5.数组优点:
??????? 检索效率比较高(每个元素占用空间大小相同,内存地址是连续的,知道首元素内存地址,然后知道下标,通过数学表达式计算出元素的内存地址,所以检索效率比较高)
?? 6.数组缺点:
??????? 随机增删元素效率比较低
??????? 另外数组无法存储大数据量(很难找到一块非常大的连续的内存空间)
?? 7.向数组末尾添加元素,效率很高,不受影响
?? 8.这么多集合中,使用最多的集合是ArrayList集合,因为往数组末尾添加元素,效率是不受影响的。另外,我们检索/查找某个元素的操作比较多。
?? 9.ArrayList集合是非线程安全的(不是线程安全的集合)
?import java.util.ArrayList;
?import java.util.List;
?public class ArrayListTest01{
??? public static void main(String[] args){
?????? //默认初始化容量是10
????? //数组长度是10
?????? List list1 = new ArrayList();
?????? //集合的size方法是获取当前集合中元素的个数,不是获取集合中的容量
????? System.out.println(list1.size());?? //0
????? //指定初始化容量
???? //数组长度是20
????? List list2 = new ArrayList(20);
????? System.out.println(list2.size()); //0
?? }
?}
位运算符 >>
??? public class BinaryTest{
?????? public static void main(String[] args){
????????? //>>1? 二进制右移1位
???????? //>>2?? 二进制右移2位
??????? //10的二进制位是:00001010?? [10]
?????? //10的二进制右移1位是:00000101? [5]
???? System.out.println(10>>1);//右移1位就是除以2
?????
????? //二进制位左移1位
???? //10的二进制位是:00001010? [10]
??? //10的二进制位左移1位是:00010100? [20]
?? System.out.println(10<<1);
?? }
}
?public class ArrayListTest02{
???? public static void main(String[] args){
???????? //默认初始化容量是10
??????? List myList1 = new ArrayList();
????? //指定初始化容量是100
????? List myList2 = new ArrayList(100);
????? //创建一个HashSet集合
????? Collection c = new HashSet();
????? c.add(100);
????? c.add(200);
????? c.add(900);
????? c.add(50);
????? //通过这个构造方法就可以将HashSet集合转换成List集合
????? List myList3 = new ArrayList(c);
????? for(int i=0;i<myList.size();i++){
???????? System.out.println(myList3.get(i));
????? }
?? }
}