Java中的一些集合
2009-01-23 14:27
381 查看
对于我写的东西,都是我对学习中的一些理解。希望可以给同我一样的人带来帮助。本人才疏学浅,如果有错误请纠正。
先说说集中常见的集合。Set、List、HashMap、Hashtable、HashSet、LinkedHashMap、LinkedHashSet、TreeSet、TreeMap、Vector、ArrayList。这是我所知道的一些集合操作,如果还有更多的请大家来补充,关于这些我们先慢慢的分析一下。
首先说说关于Set,List。这两者的区别就是Set是没有顺序的,在向里面放数据的时候,不能出现相同的元素。而List呢则是有顺序的,往里面放数据的时候呢,可以出现相同的元素,因为他是有顺序的可以把相同的元素分开,所以其中才允许插入相同的元素。
HashMap,Hashtable,HashSet这三个呢,其中HashMap与Hashtable都是Map的接口类,用唯一的键对应相应的值上。这里还要注意的是呢,我们写代码的时候就可以看出来,HashMap呢输出的时候没有顺序,而Hashtable是同步的也就是有顺序的,感兴趣的朋友呢,可以用代码实现下。而且,关于Map这种键值对应写代码的时候呢。要先对键进行遍历,然后进行迭代,随后根据键取中相应的值。而HashSet就是哈希表与set方式的结合体,具体的解释呢我也不太会说,只要会用就可以了。当作Set一样用。
下面还有两个相对的。一个是TreeMap一个是TreeSet。这两个我们可以先从单词上面分析,Tree就是树,我们用代码实验的时候就会发现,这两个都是有序呢。这个TreeMap就和Hashtable一样是有序的。
下面呢我们在分析下,ArrayList和Vector还有LinkedList这三者,我们可以看出呢他们都是List的接口类,也就是说,他们在存储的过程中呢都是有序的。但是我们仍然需要注意的是呢。三者选择存储数据的时候存储方式是不同的。前两者采用的是数组的存储方式,他们实际所能存储的数据肯定是比存储的数据多,这样方面他们进行删除与插入操作,他们就是索引功能较强,插入性能较差,而Vector呢,虽然采用了数据的存储方式,但是性能上他还是比ArrayList差的。因为他采用了线程安全这个方法。所以性能相对于ArrayList差点。而LinkedList采用的是双向链表的存储方式,所以他的插入性能较强,而索引性能较弱。
这是几个常用的集合。可能初学者刚开始一听的时候是比较乱的,下面呢我们可以归纳旅顺一下。
1.如果这个集合名字上面有Map,那么他就是采用的是那种键值对应的那种方式的。一个例外就是Hashtable
2.如果这个名字上面呢有List,那么他存储的时候呢就是有序的,也有一个例外呢就是Vector
3.如果这个名字上面有Set,那么他存储的时候就是无序的。
4.如果名字上面带有Linked***那么他就采用的是链表的存储方式。
5.两个例外TreeMap与TreeSet。都是有序呢。这样看起来是不是很直观了呢?
下面一个代码小例子,就是Map接口类的时候怎样对键进行遍历,迭代
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class HashMapTest {
public static void main(String args[]) {
HashMap hm = new HashMap();
hm.put("k1", "1");
hm.put("k2", "2");
hm.put("k3", "3");
hm.put("k4", "4");
hm.put("k5", "5");
hm.put("k6", "6");
Set key = hm.keySet();
Iterator it = key.iterator();
while (it.hasNext()) {
String keyNumber = (String) it.next();
System.out.println("键" + keyNumber);
String value = (String) hm.get(keyNumber);
System.out.println("值" + value);
}
}
}
先说说集中常见的集合。Set、List、HashMap、Hashtable、HashSet、LinkedHashMap、LinkedHashSet、TreeSet、TreeMap、Vector、ArrayList。这是我所知道的一些集合操作,如果还有更多的请大家来补充,关于这些我们先慢慢的分析一下。
首先说说关于Set,List。这两者的区别就是Set是没有顺序的,在向里面放数据的时候,不能出现相同的元素。而List呢则是有顺序的,往里面放数据的时候呢,可以出现相同的元素,因为他是有顺序的可以把相同的元素分开,所以其中才允许插入相同的元素。
HashMap,Hashtable,HashSet这三个呢,其中HashMap与Hashtable都是Map的接口类,用唯一的键对应相应的值上。这里还要注意的是呢,我们写代码的时候就可以看出来,HashMap呢输出的时候没有顺序,而Hashtable是同步的也就是有顺序的,感兴趣的朋友呢,可以用代码实现下。而且,关于Map这种键值对应写代码的时候呢。要先对键进行遍历,然后进行迭代,随后根据键取中相应的值。而HashSet就是哈希表与set方式的结合体,具体的解释呢我也不太会说,只要会用就可以了。当作Set一样用。
下面还有两个相对的。一个是TreeMap一个是TreeSet。这两个我们可以先从单词上面分析,Tree就是树,我们用代码实验的时候就会发现,这两个都是有序呢。这个TreeMap就和Hashtable一样是有序的。
下面呢我们在分析下,ArrayList和Vector还有LinkedList这三者,我们可以看出呢他们都是List的接口类,也就是说,他们在存储的过程中呢都是有序的。但是我们仍然需要注意的是呢。三者选择存储数据的时候存储方式是不同的。前两者采用的是数组的存储方式,他们实际所能存储的数据肯定是比存储的数据多,这样方面他们进行删除与插入操作,他们就是索引功能较强,插入性能较差,而Vector呢,虽然采用了数据的存储方式,但是性能上他还是比ArrayList差的。因为他采用了线程安全这个方法。所以性能相对于ArrayList差点。而LinkedList采用的是双向链表的存储方式,所以他的插入性能较强,而索引性能较弱。
这是几个常用的集合。可能初学者刚开始一听的时候是比较乱的,下面呢我们可以归纳旅顺一下。
1.如果这个集合名字上面有Map,那么他就是采用的是那种键值对应的那种方式的。一个例外就是Hashtable
2.如果这个名字上面呢有List,那么他存储的时候呢就是有序的,也有一个例外呢就是Vector
3.如果这个名字上面有Set,那么他存储的时候就是无序的。
4.如果名字上面带有Linked***那么他就采用的是链表的存储方式。
5.两个例外TreeMap与TreeSet。都是有序呢。这样看起来是不是很直观了呢?
下面一个代码小例子,就是Map接口类的时候怎样对键进行遍历,迭代
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class HashMapTest {
public static void main(String args[]) {
HashMap hm = new HashMap();
hm.put("k1", "1");
hm.put("k2", "2");
hm.put("k3", "3");
hm.put("k4", "4");
hm.put("k5", "5");
hm.put("k6", "6");
Set key = hm.keySet();
Iterator it = key.iterator();
while (it.hasNext()) {
String keyNumber = (String) it.next();
System.out.println("键" + keyNumber);
String value = (String) hm.get(keyNumber);
System.out.println("值" + value);
}
}
}
相关文章推荐
- java集合2——集合collection的一些练习题
- java集合中的一些易混淆的知识点
- java集合(4)——map的一些应用
- java.util.ConcurrentModificationException的解决办法 大家应该都知道, 在java中, 在对一些集合迭代的过程中对集合进行一些修改的操作, 比如说add,re
- Java 集合框架分析:JAVA集合中的一些边边角角的知识
- 对于java.util包中几个集合的一些区别
- 基于java集合中的一些易混淆的知识点(详解)
- Java的一些高级特性(四)——集合
- java传统集合的一些弊病以及解决办法
- JAVA中集合框架一些常用类的总结
- 黑马程序员_Java语言_集合框架(一些使用案例及泛型)
- 对于java 集合的一些理解
- java集合-HashMap的一些记录
- 面试时java集合中的一些要点
- java传统集合的一些弊病以及解决办法
- Java集合的一些知识点和登录注册习题
- JAVA的一些高级知识集合
- java获取服务器一些信息方法集合(访问路径之类的) (未测试)
- 对于JAVA集合的一些总结
- Java集合使用中的一些“坑”