集合就相当于数组
可以存放多个元素
根据下标取值
和数组最大的区别:
数组的大小是不可变的
集合的大小是可变的,动态扩容
Collection 集合的顶级接口
集合框架
Collection 集合的顶级接口
List接口,必须指定一个泛型
ArrayList 基于数组的集合
List<String> as = new ArrayList<String>();用父类声明,子类实现
add(需要增加的)(增加)
get(索引)(拿到)
ArrayList<String> bs = new ArrayList<String>();
bs.add("啊啊");
bs.add("bb");
bs.add("cc");
as.addAll(bs);连接
查看所有的数值
for (int i = 0; i < as.size(); i++) {
System.out.println(as.get(i));
// as.get(i) == as[i]
}
for (String s : as) {
System.out.println(s);
}
长度length,size
查看长度(length,size)
System.out.println(as.size());
comtains(想判断的)(是否包含)
// 数组的空间必须是连续的
// 随机查找:根据下标取值
// ArrayList其实就是一个数组
// 扩容的原理:新建一个更大的数组,把原来的数组的内容复制过去
ArrayList<String> fs = new ArrayList<String>(2);
fs.add("a");
fs.add("a");
fs.add("a");
Vector 基于数组的集合,更安全
LinkedList 基于链表的集合
链表和数组的区别:
数组查询效率搞
链表是扩容,删除效率搞
链表:一些不连续的空间,彼此有联系
LinkedList<String> ls=new LinkedList<String>();
ls.get(2);
ls.getFirst();
ls.getLast();
Set接口: 去重,顺序不一致无下标
//Set集合: 去重
Set<String> set=new HashSet<String>();
set.add("小黑");
set.add("小百");
set.add("小黑");
for (String s : set) {
System.out.println(s);
}
System.out.println(set.size());
//新建一个存放数字的ArrayList
List<Integer> is=new ArrayList<Integer>();
is.add(12);
set.clear();
System.out.println(set.size());
HashSet
HashTable 安全
TreeSet 排序功能的set