集合:就是存放数据的一个容器,可以弥补数组的一些缺陷
数组和集合的区别
1.数组能存基本数据类型和引用类型
2.集合当中只能存放引用数据类型,直接放,也会自动把基本数据类型转换为对象,集合中只能存放对象
3.数组长度是固定,不能再去增长
集合长度是可以改变的,根据元素的增长而增加
什么识货使用数组,什么时候使用集合类
1.如果元素的个数是固定,推荐使用数组
2.如果元素不是固定,推荐使用集合
Collection接口
List中可以添加重复的元素
List当中add返回值都是true
ArrayList已经覆盖了toString 直接可以打印结果
List:有顺序,不唯一
set:无顺序,唯一
ArrayList实现了长度可变的数组,遍历元素和随机访问元素的效率比较高
LinkedList采用链表存储方式,插入,删除元素时效比较高
添加元素
ArryayList list = new ArrayList();
list.add(1); //添加元素1
list.add(2,111); //在index为2 的位置上添加元素111 ,该方法是list的子类方法,collection并不能使用
修改元素
/**
在list上修改i位置上的值
*/
for(int i = 0; i<list.size();i++){
Object obj = list.get(i);
if(obj intanceof Integer){
int k = (Integer)obj;
list.set(i,k+10)
}
}
以上方法是未设置泛型,没有限定容器里面值的类型
在编译阶段,<>加上一定的限制
List<Integer> list = new ArrayList<Integer>();
list.add(1); // 限定了只能添加Integer类型的值
for(int i =0;i<list.size();i++){
int k = list.get(i); //不需要强制转换
System.out.println(k+10);
}
清空所有 list.clear();
移除一个 list.remove(index) //根据下标移除 list.remove(new Integer(2)); //移除一个,遍历数组,移除第一个找到的2
List 中的排序:
1.直接根据list集合中的数据判断大小,然后进行交换位置
2.可以利用集合转为数组然后对数组进行排序
3. 利用List接口中的sort进行排序
4. Collections中sort进行排序