Java集合类与数组的区别:Java的集合类的长度是动态的,数组则是固定长度的。
Java集合类与数组的联系:使用相应的toArray()和Arrays.asList()方法可以回想转换。
首先来看看Java集合框架中的接口:
Collection接口实现类中存放的是元素和Map接口实现类中存放的是键值对。
Set接口和List接口:Set接口不保证维护元素的顺序,而且元素不能重复。List接口维护元素的顺序,而且元素可以重复。
SortedSet和SortedMap提供了排序的功能。
类集合 Collection分为:List、Set List:ArrayList、LinkedList、Vector。 Set:HashSet、TreeSet Map:HashMap、Hashtable、TreeMap 接口:接口里面的方法都是公共、抽象的,里面定义的常量都是公共、final、静态的。 定义接口: abstract interface A{ public void add(); }
再来看看接口的实现:
HashSet和LinkedHashSet:HashSet,为快速查找而设计的Set。存入HashSet的对象必须实现hashCode()和equals()。LinkedHashSet,具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序),于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。
TreeSet: 提供排序功能的Set,底层为树结构 。相比较HashSet其查询速度低,如果只是进行元素的查询,我们一般使用HashSet。
ArrayList和LinkedList:ArrayList底层采用数组实现,具有较高的查询速度。LinkedList底层采用双向循环列表实现,进行插入和删除操作时具有较高的速度,我们还可以使用LinkedList来实现队列和栈。
TreeMap和HashMap:HashMap具有较高的速度(查询增删),TreeMap则提供了按照键进行排序的功能。
那么这几个类有什么不同呢?
1、list更关注与事物的链接,可以有重复的值
2.set更关注事物的唯一性
3.queue更关注事物的处理顺序
4.map更关注事物的映射与键值的唯一,主要是key值
import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class Map_test { public static void main (String args[]){ Map<String ,String> map=new HashMap<String,String>(); map.put("s", "12"); Set<String> key=map.keySet(); Iterator< String>iter=key.iterator(); while(iter.hasNext()){ String str=iter.next(); System.out.println(str); } Collection<String>col=map.values(); Iterator<String> iter1=col.iterator(); while(iter.hasNext()){ String str=iter.next(); System.out.print(str); } /** *下面是连个相同的例子 */ for(Map.Entry<String, String> me:map.entrySet()){ me.getKey(); me.getValue(); } Set<Map.Entry<String,String>> allset=map.entrySet(); Iterator<Map.Entry<String,String>> iter11=allset.iterator(); while(iter11.hasNext()){ Map.Entry<String, String > me=iter11.next(); } } }
参考:http://www.cnblogs.com/azai/archive/2010/12/09/1901272.html