java之集合类详解

java集合类图

  

上述所有集合类都实现了Iterator,这是一个用于便利集合中元素的接口,主要包含hashNaxt()Next()Remove()三种方法

 

常见的集合有:

MapConllection是所有集合框架的父接口

Collection接口下的子接口包含:set接口和list接口

Map接口下的实现类有:HashMapTreeMapHashtable

Set接口下的实现类:HashSetTreeSetLinkedHashSet

List接口下的实现类:ArrayLIstLinkedListStackVector

 

HashMapHashtable的区别

HashMap是没有考虑同步的,是线程不安全的,Hashtable使用了syncharonized关键字,是线程安全的

前者允许null作为key,后者不予许null作为key

 

详解

hashSetSet的一个子接口,主要特点是:里面不能存放重复元素,而且采用散列的储存方法所有没有顺序,这里的顺序是指:输入和插入的元素顺序不一致

 

代码实例:HashSet:

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class HsahSetDemo {
    
    public static void main(String[] args){
        Set<String> set = new HashSet<String>();
        
        set.add("a");
        set.add("b");
        set.add("c");
        set.add("b");
        set.add("e");
        set.add("c");
        
        //使用Itertor遍历集合
        Iterator<String> iter = set.iterator();
        while (iter.hasNext()) {
            System.out.print(iter.next() + "   ");
        }
        System.out.println();
        
        //使用For Each输出集合
        for (String e: set) {
            System.out.print(e + "    ");
        }
        System.out.println();
        
        //使用toString输出集合
        System.out.println(set);
    }

}

代码实例:setTest:

package www.demo.BubbleSort;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;

public class setTest {
    
    public static void main(String[] args) throws FileNotFoundException{
        
        Set<String> works = new HashSet<String>();
        
        //通过输入流打开文献
        //方法一:这个方法不需要抛出异常
        InputStream inputStream = setTest.class.getResourceAsStream("Alice.txt");
        
        //需要抛出异常
        InputStream inStream = new FileInputStream("F:\\workspace\\Alice.txt");
        Scanner in = new Scanner(inStream);
        while (in.hasNext()) {
            works.add("");
        }
        Iterator<String> iter = works.iterator();
        for (int i = 0; i < 5; i++) {
            if(iter.hasNext()){
                System.out.println(iter.next());
            }
            System.out.println(works.size());
        }
    }
}

ArrayList

ArrayListlist的一个子类,他和hashSet相反,允许元素重复,所以元素都是有序的,元素被访问的顺序取决于集合的类型,如果对ArrayList访问,迭代器将从索引0开始,每迭代一次,索引值加1

 

代码实例:ArrayListDemo:

package www.demo.arraylist;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * 允许重复
 * @author Administrator
 */
public class ArrayListDemo {

    public static void main(String[] args) {
        List<String> arrayList = new ArrayList<String>();

        arrayList.add("a");
        arrayList.add("a");
        arrayList.add("bb");
        arrayList.add("bb");
        arrayList.add("c");
        arrayList.add("c");
        arrayList.add("r");

        // 使用iterator输出
        Iterator<String> iter = arrayList.iterator();
        while (iter.hasNext()) {
            System.out.print(iter.next() + "   ");
        }
        System.out.println();

        // 使用for each输出
        for (String ite : arrayList) {
            System.out.print(ite + "   ");
        }
        System.out.println();

        // 使用toString输出
        System.out.println(arrayList);
    }

}

 

以上代码均已测试

posted @ 2018-05-31 14:54  空荡丶Forever  阅读(149)  评论(0编辑  收藏  举报