集合应用
List<Dog> dogs=new ArrayList<Dog>();
ArrayList初始化容量是10,当插入的元素超过10个以后,会重新分配空间,
会使容器增长到16
规则:(旧容量*3)/2+1
10-》16-》25-》38-》58
List<Dog> dogs=new ArrayList<Dog>(4);
4->7->11->17->26
一旦容量发生变化,就要带来额外的内存开销,和时间上的开销。
所以,在已经知道容量大小的情况下,推荐使用下面方式进行声明:
List arrayList = new ArrayList(CAPACITY_SIZE);
即指定默认容量大小的方式。
集合中能否存储基本类型数据?包装类?
基本数据类型:
byte short int long
float double
boolean
char
List<int> nums=new ArrayList<int>();//不能存储基本数据类型
底层开发人员给我们提供一些类:包装类(将基本数据类型进行了包装,对象类型)
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
1.集合的存储数据问题
2.包装类中提供大量方法
自动装箱和自动拆箱 jdk1.5
自动装箱:执行的是Integer.valueOf(10) 范围只能在-128---127之间才可以完成装箱,否则执行是new Integer
Integer a=10;
Integer b=10;
System.out.println(a==b);//true
Integer e=new Integer(10);
Integer f=new Integer(10);
System.out.println(e==f);//false
Integer c=128;
Integer d=128;
System.out.println(c==d);//false
java.lang包是自动引入到类下去使用里面的类
String Object
其他所有底层类都需要import引入
遍历元素
使用下标遍历 处理简单有序的集合
for-each 遍历集合和数组,操作简单易懂
迭代器遍历(Iterator)
最强大,任何Collection集合都可以边遍历边修 改;不需要知道元素的类型
Iterator对Colletion进行迭代的
对JAVA集合进行遍历删除时务必要用迭代器
将狗狗的信息存在Set集合中,然后按照健康值排序输出,在
将狗狗信息插入到Treeset集合中,会抛出ClassCastException异常?
String 好用
Dog 不好用
TreeSet:以某种规则(二叉树)进行排序。
String可以进行两个不同值内容的比较
Dog:不能直接比较里面的值。因此当我们比较两个自定义对象的时候,一定会指定按照
哪些属性进行排序。
* TreeSet 自然排序的功能
*
* 按照对象其属性进行排序
*
* 1.必须在我们类中实现Compareable接口
* 2.必须接口中方法compare
Collection和Collections
Collection 接口 子接口:List和Set
Collections 类 工具类