在java中,对数据的操作很多都要用到集合。最近零星的看了一点集合的相关知识,这里稍微梳理一下。基本上就是集合操作的四个常用类的一点总结。
首先,集合大致分为两个方向,一种是普通的集合类型,通过接口collection向下扩展,另一种是map接口下的键值对的集合类型。今天主要说的的四个类ArrayList和LinkedList是collection接口下List接口的两个实现类。另外两个HashMap和TreeMap则是Map接口的实现类。
首先,对于Collection,它的主要分支有两个:List和Set。List是有序的可以重复的集合接口,而Set是无序的不可重复的集合接口。
ArrayList:
- 线程非同步
- 介绍:可变的数组,允许所有元素包括NULL
- 特点:可以根据索引位置对集合进行快速的访问和遍历,缺点是向指定位置插入和删除对象很慢
- 应用:适合随机查找和遍历,不适合插入和删除。
LinkList:
- 线程非同步
- 介绍:采用链表结构保存对象
- 特点:很便于向指定地点插入和删除对象,缺点是随机访问集合中的对象效率很慢
- 应用:数据的动态插入和删除,不适合随机访问和遍历
@Test
public void test1()
{
List<String> list=new ArrayList<String>();
list.add("AK-47");
list.add("ACER");
list.add("ASUS");
list.set(2, "HP");//替换
list.add(2, "Dell");//插入
list.add("LENOVO");
list.indexOf("HP");//查找
Iterator<String> iterator =list.iterator();
while(iterator.hasNext())
{
System.out.println(iterator.next());
}
}
HashMap:
- 介绍:基于哈希表的Map接口实现,允许NULL
- 特点:实现了Map集合对添加删除映射关系效率比较高,不能保证映射顺序
- 应用:用于添加删除映射关系
TreeMap:
- 介绍:实现Map和SortedMap接口,不允许NULL
- 特点:有一定的映射顺序,但是添加删除映射关系效率比HashMap差
- 应用:用于添加删除映射关系
@Test
public void test2()
{
HashMap m=new HashMap();
m.put("001", "Acer");
m.put("002", "HP");
m.remove("002");
m.put("003", "LENOVO");
Set set=m.entrySet();
Iterator iterator=set.iterator();
while(iterator.hasNext())
{
Map.Entry mapentity= (Map.Entry) iterator.next();
System.out.println(mapentity.getKey()+":"+mapentity.getValue());
}
}
OK,集合就先写到这里。有什么错误请指正