java中的集合类的用法和使用场合
2007-05-20 16:56
281 查看
HashTable,Vector类是同步的,而HashMap,ArrayList不是同步的。 因此当在多线程的情况下,应使用 HashTable和 Vector,相反则应使用HashMap,ArrayList.如果需要使用同步的集合可以使用 Collections.synchronizedList(List<T> list)得到同步的 List,Collections.synchronizedMap(Map<K,V> m) 的到同步的Map,也可以由Collections.synchronizedSet(Set<T> s)得到同步的Set,但他们的效率稍低.另外在除需要排序时使用TreeSet,TreeMap外,都应使用HashSet,HashMap,因为他们 的效率更高。ArrayList 和LinkList 的对比:ArrayList 由数组构建, LinkList由双向链表构建,因此在程序要经常添加,删除元素时速度要快些,最好使用LinkList,而其他情况下最好使用ArrayList.因 为他提供了更快的随机访问元素的方法。
在需要使用栈时,应使用LinkList 类来构件,不应使用Stack,因为Stack继承自Vector,包含方法elementAt(int indext),可以取得任意位置的对象,因此破坏了栈的机制.
可以使用LinkList 构建堆栈,和队列,方法如下:
堆栈:要点-->后进先出.
class MyStack{
private LinkedList linkList;
public MyStack(){
this.linkList = new LinkedList();
}
public Object pop(){
return linkList.removeLast();
}
public void push(Object obj){
linkList.addLast(obj);
}
public Object peek(){
return linkList.getFirst();
}
public boolean isEmpty(){
return linkList.isEmpty();
}
public int size(){
return linkList.size();
}
}
队列:要点-->先进先出.
class MyQueue{
private LinkedList linkList;
public MyQueue(){
this.linkList = new LinkedList();
}
public Object pop(){
return linkList.removeFirst();
}
public void push(Object obj){
linkList.addLast(obj);
}
public Object peek(){
return linkList.getFirst();
}
public boolean isEmpty(){
return linkList.isEmpty();
}
public int size(){
return linkList.size();
}
}
Properties类可以用来保存配置信息.需要注意的是无论文件的后缀名称是什么格式的如ini,txt,edi,etc..只要形式如下:
win.ini:
Author=Alan
version=1.2
使用Properites的load方法就能加载进来读取.另外System.getProperties将返回当前系统的所有属性。
Properties使用方法:
package com.jingcheng.base;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.Map.Entry;
public class PropertyTest {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Properties props = new Properties();
FileInputStream fis = new FileInputStream("win.prop");
props.load(fis);
Set sets = props.entrySet();
Iterator it = sets.iterator();
while(it.hasNext()){
Map.Entry mapEntry = (Map.Entry)it.next();
System.out.println("key:"+mapEntry.getKey());
System.out.println("value:"+mapEntry.getValue());
}
}
在需要使用栈时,应使用LinkList 类来构件,不应使用Stack,因为Stack继承自Vector,包含方法elementAt(int indext),可以取得任意位置的对象,因此破坏了栈的机制.
可以使用LinkList 构建堆栈,和队列,方法如下:
堆栈:要点-->后进先出.
class MyStack{
private LinkedList linkList;
public MyStack(){
this.linkList = new LinkedList();
}
public Object pop(){
return linkList.removeLast();
}
public void push(Object obj){
linkList.addLast(obj);
}
public Object peek(){
return linkList.getFirst();
}
public boolean isEmpty(){
return linkList.isEmpty();
}
public int size(){
return linkList.size();
}
}
队列:要点-->先进先出.
class MyQueue{
private LinkedList linkList;
public MyQueue(){
this.linkList = new LinkedList();
}
public Object pop(){
return linkList.removeFirst();
}
public void push(Object obj){
linkList.addLast(obj);
}
public Object peek(){
return linkList.getFirst();
}
public boolean isEmpty(){
return linkList.isEmpty();
}
public int size(){
return linkList.size();
}
}
Properties类可以用来保存配置信息.需要注意的是无论文件的后缀名称是什么格式的如ini,txt,edi,etc..只要形式如下:
win.ini:
Author=Alan
version=1.2
使用Properites的load方法就能加载进来读取.另外System.getProperties将返回当前系统的所有属性。
Properties使用方法:
package com.jingcheng.base;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.Map.Entry;
public class PropertyTest {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Properties props = new Properties();
FileInputStream fis = new FileInputStream("win.prop");
props.load(fis);
Set sets = props.entrySet();
Iterator it = sets.iterator();
while(it.hasNext()){
Map.Entry mapEntry = (Map.Entry)it.next();
System.out.println("key:"+mapEntry.getKey());
System.out.println("value:"+mapEntry.getValue());
}
}
相关文章推荐
- java中的集合类的用法和使用场合
- Java中 Random随机用法与List集合配套使用实现随机点名
- 【java开发系列】—— 集合使用方法
- java语言基础(65)——集合框架(List的使用)
- java集合使用——TreeSet
- 使用xStream对(Java对象、List集合、Map )到JSON转换、从JSON转换java对象
- Java:集合,Arrays工具类用法
- java中采用集合使用pull解析xml文件格式的方法
- Java 集合系列16之 HashSet详细介绍(源码解析)和使用示例
- Java集合的概念及其相关类的简单使用
- java对list集合使用comparator方法比较排序
- Java集合的用法和比较
- Java中,abstract使用的场合
- Java集合之泛型的使用
- Java之戳中痛点 - (3)三目运算符的两个操作数类型尽量一致 Java之戳中痛点 - (4)i++ 和 ++i 探究原理 Java之戳中痛点 - (1)易变业务使用脚本语言编写 Java之戳中痛点 - (2)取余用偶判断,不要用奇判断 (5)switch语句break不能忘以及default不同位置的用法 Java之戳中痛点 - (7)善用Java整型缓存池
- 关于java中的List集合的排序问题/Collections.sort()的使用(转)
- Java【集合系列】-11- Hashtable详细介绍(源码解析)和使用示例
- Java集合定义与用法实例总结【Set、List与Map】
- Java 集合系列12之 TreeMap详细介绍(源码解析)和使用示例
- Java_集合操作_使用细节