集合的长度是可变的。
Collection:层次结构的集合接口,用于描述一组对象。
Map:键值结构的集合接口,可以通过键获取值。
Collection
Map
| |
list set (子接口) HashMap(实现类)
| |
ArrayList HashSet (实现类)
Iterable 迭代器 ,所有的超级接口,有一个iterator()的方法
List集合的特点:
1、线性存储数据(队列结构,先进先出)
2、允许写进重复的数据
ArrayList :是一个动态数组,其底层是通过数组来实现的。
打印显示集合的所有元素(三种方法)
方法一:普通的循环遍历
ArrayList list = new ArrayList();
for(int i =0 ; i < list.size(); i++){
system.out.println(list.get(i));
}
方法二:迭代器迭代
//获取集合的迭代器
Iterator iterator = list.iterator();
//使用迭代器进行数据的迭代
while(iterator.hasNext()){
//获取当前迭代的数据
Object value = iterator.next();
system.out.println(value);
}
方法三:快速迭代的方式
结构:for(元素的类型 变量名:被遍历的集合){
//通过变量名表示遍历到的数据值
}
for(Object value:list){
system.out.println(value);
}
在快速遍历的迭代过程中,不允许对被遍历的集合进行增删改等操作。
性能方面:
ArrayList在查询的时候性能较好,但对集合的数据进行增加、删除、修改等操作时性能较差。
LinkedList采用的是链式结构,所以它对增、删、改等操作性能较好,但对查询性能就会很差。
Arr
ayList集合会把后面的元素
(因为ArrayList在增加操作时,如果超过初始的长度,它会新建一个长度为原来1.5倍+1的数组,代替原来的数组;删除时,如果前面的元素值被删除,
值往前面移动)
(LinkedList采用链式结构,所以在执行增删改操作时,只需要对元素值得指针进行改变,而指针的改变对内存的消耗是很少的,在查询上,LinkedList集合在存储元素时,是随机存储的,然后通过指针连接)
Vector 集合 和ArrayList 都属于动态数组,区别在于Vector 是线程安全集合,而ArrayList是非线程安全集合。
set集合
特点:
1、无序存储
2、不能存储重复的元素
set集合无法获取单个指定的元素,所以只能通过遍历或者迭代的方式来获取。
set集合存储的元素根据哈希值排列的额,并且不能存储重复的数据。
泛型
通过泛型来约束集合中存储的元素类型
使用泛型后不需要进行拆箱
Map
以键值对的方式存储数据。
键不能重复
值允许重复
通过键获取值
同上的Vector 和ArrayList,HashMap是非线程安全的集合,而HashTable是线程安全的集合。
Entry表示一个键值对,Map中的每个元素都是Entry类型。
//记住HashMap的三个重要方法
entrySet()//获取集合中的所有键值对
keySet()//获取集合中的所有键
values()//获取集合中的所有值
三种方式遍历HashMap集合
HashMap<Integer,String> map = new HashMap<Integer,String>();
map.put(1001,"A");
map.put(1002,"B");
map.put(1003,"C");
//方法一根据键来遍历集合
for(Integer key:map.keySet()){
system.out.println(map.get(key));
}
//方法二:根据值来遍历
for(String value:map.values()){
system.out.println(value);
}
//方法三:根据键值对Entry来遍历
for(Entry<Integer,String> entry:map.entrySet()){
system.out.println(entry.getKey()+"\t"+entry.getValue());
}
collections 类是Java集合框架的工具类,封装了集合相关的处理方法
Arrays类也是集合的工具类,仅针对 List 结合的使用
//直接获取List集合
//空集合,emptyList()方法
List list = Collections.emptyList();
//指定值的集合 ...表示参数允许出现任意多次,asList()方法
List list = Arrays.asList("a","b","c","d");
System.out.println(list.size());