集合
前言
本文介绍了集合
以下是本篇文章正文内容
一、什么是集合?
在Java程序中,我们有数组的概念,数组可以存放一组数据,但是,由于数组的长度是固定的,在使用的时候就会造成资源的浪费。这时候集合就出现了,集合可以动态改变数组的长度。Java的集合类都处于Java.util包中,包含了大量的集合接口,集合接口的实现类
java集合主要分为Collection和Map
1.迭代器
Iterator:迭代器,将集合的元素进行一个迭代。
2.Set
set集合不支持重复元素,是无序的
代码如下(示例):
public class SetDemo {
public static void main(String[] args) {
Set set = new HashSet();
set.add("你好");
set.add("世界");
set.add("hello");
set.add("world");
/**
*iterator迭代器,进行迭代,输出
*/
Iterator it = set.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
}
输出结果
常用的方法还有
isEmpty()为空返回true
add()添加元素
remove()删除元素
clear()清空元素
3.List
List:有序的,长度可变,元素可以重复,可以通过下标找到集合中的元素。
ArrayList和LinkedList都属于Collection的接口
ArrayList和LinkedList都是List的实现类
public static void main(String[] args) {
List list = new ArrayList();
list.add("你好");
list.add("世界");
list.add("hello");
list.add("world");
System.out.println(list);
//也可以使用迭代器
Iterator it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
1.ArrayList,Vector和LinkedList的区别
Arraylist,Vector的底层是由数组实现的,LinkedList底层是由双向循环链表实现的,由底层就可以看出他们的性能
ArrayList,Vector插入速度较慢,但查询速度较快,而LinkedList可以很快捷的被插入或查询,但查询速度不快。再者由于Vector加了线程安全锁,所以ArrayList 的运行效率高于 Vector。
4.map
map不属于collection的接口
1.HashMap
以键值对的形式存在(key:value)
key重复,下一个值会覆盖上一个值
map以KeySet进行迭代
public static void main(String[] args) {
HashMap map = new HashMap();
map.put(1, "你好");
map.put(2, "世界");
//用keySet()取键值
Set set = map.keySet();
Iterator it = set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
//用values()取value值
//Collection coll = map.values();
//Iterator it1 = coll.iterator();
//while (it1.hasNext()) {
//System.out.println(it1.next());
//
//}
//也可以用entrySet(),拿到map的key和值value
//Set set = map.entrySet();
//
//
}
5.泛型
指集合的类型,规定这个集合存放什么数据类型,这个集合就只能存放这一种数据类型。