java 數據結構


Java 數據結構

(1)    Collection 接口是用於容納元素的容器。而Iterator接口是用於遍歷集合中每一個元素的數據結構,因此Iterator也被稱為迭代器。

Iterator 通用方法簡介

方法

簡介

Boolean hasNext()

可以判斷是否到了集合的末尾,如果到集合的末尾,就返回false

Object next()

返回當前指針跳過的那個元素

Void remove()

從集合中刪除1個元素

代碼如下:

public  void test1_array()
    {
        Collection c = new ArrayList(); 
        c.add("張三");
        c.add("李四");
        c.add("王五");
        c.add("張三");        
        //
        for (Iterator it=c.iterator();it.hasNext();)
        {
            String s=(String)it.next();
            System.out.println(s);
        }
    }

(2)    List接口

List接口繼承了Collection接口以定義一個允許重復項的有序集合,該接口不但能夠對列表的一部分進行處理,還添加了對指定位置元素進行操作的功能。

public void test2_array()
	{
		List<Integer> lst=new ArrayList<Integer>();
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		while (true)
		{
			System.out.println("請輸入一個整數(按下q鍵)");
			String input=null;
			try
			{
			    input=br.readLine();	
			}
			catch (IOException e)
			{
				e.printStackTrace();
			}
			if (input.equals("q"))
			{
				break;
			}
			lst.add(new Integer(input));
		}
		Integer[] arr=new Integer[lst.size()];
		arr=lst.toArray(arr);
		System.out.println(Arrays.toString(arr));		
	}

  Java的集合框架 中有2種常用的List實現類:ArrayList和LinkedList。如果隨機訪問可以使用ArrayList,如果順序訪問列表元素,使用LinkedList實現。

(3)    Map接口

Map接口用於維護鍵-值對(key-value),按其定義,Map接口描述了從不重復的鍵到值的映射。

public void test3_array()
	{
		Map map1=new TreeMap();
		//新增
	    map1.put("1", "賈海天");
	    map1.put("2", "李濤");
	    //key值重復,取最后的取值
	    map1.put("3", "鍾亮");
	    map1.put("3", "吉連兵");
	    //遍歷查詢
	    Set set1=map1.keySet();
	    Iterator it1=set1.iterator();	    
	    while (it1.hasNext())
	    {
	    	String key=(String)it1.next();
	    	String value=(String)map1.get(key);
	    	System.out.println("key:="+key+",value :="+value);
	    }
	    //刪除
	    map1.remove("1");
	    map1.remove("4");
	    System.out.println("刪除以后的結果:");
	    Set entitySet=map1.entrySet();
	    Iterator it2=entitySet.iterator();
	    while (it2.hasNext())
	    {
	        Entry entry1=(Entry)it2.next();
	        System.out.println("key:"+entry1.getKey()+",value:"+entry1.getValue());
	    }
	}

  Map常規的實現類有:HashMap 和TreeMap。在Map中插入、刪除和定位元素。

(4)    Set 接口

Set接口繼承了Collection接口,並且不允許集合中存在重復項,每個具體的Set實現類依賴添加的對象的equals()方法來檢查唯一性。

Set接口的主要實現類:HashMap 和TreeMap。

代碼如下:

class Person implements Comparable{
    private int wage;
    private String name;
    Person (int w,String n)
    {
    	this.wage=w;
    	this.name=n;
    }
    public void setWage(int wage)
    {
    	this.wage=wage;
    }
    public int getWage()
    {
    	return this.wage;
    }
    public void setName(String name)
    {
    	this.name=name;
    }
    public String getName()
    {
    	return this.name;
    }    
    @Override
    public int compareTo(Object obj)
    {
    	Person p=(Person)obj;
    	if (this.getWage()<p.getWage())
    	{
    		return -1;
    	}
    	else
    	{
    		if (this.getWage()==p.getWage())
    		{
    			return 0;
    		}
    	}
    	return 1;
    }    
}

  

調用Person  class代碼

public void test4_array()
	{
		TreeSet mytree=new TreeSet();
		Person per1,per2,per3,per4,per5;
		per1=new Person(900,"賈海天");
		per2=new  Person(800,"李濤");
		per3=new Person(600,"鍾亮");
		//per4=new Person(600,"吉連兵");		
		//per5=new Person(600,"吉連兵");
		
		mytree.add(per1);
		mytree.add(per2);
		mytree.add(per3);
		//mytree.add(per4);
		//mytree.add(per5);
		
		Iterator it=mytree.iterator();		
		while (it.hasNext())
		{
		    Person per=(Person)it.next();
		    System.out.println("員工:"+per.getName()+",工資:"+per.getWage());
		}		
	}

  

(5)    泛型

泛型的本質就是參數化類型,也就是將操作的數據類型指定為1個參數,java 語言引入泛型的好處是提高了程序的安全性。

定義一個泛型,使其可存放各種數據類型,並加以驗證。代碼如下:

public class Gen<T> {
    private T object1;
    public Gen(T object1)
    {
    	this.object1=object1;
    }
    public T getObject()
    {
    	return this.object1;
    }
    public void setObject(T object1)
    {
    	this.object1=object1;
    }
    public void showType()
    {
    	System.out.println("T的實際類型是:"+object1.getClass().getName());
    }
}

  

調用代碼:

public void test5_array()
	{
		//泛型
		Gen<Integer> intOb=new Gen<Integer>(123);
		intOb.showType();
		int i=intOb.getObject();		
		System.out.println("value="+i);
		
		Gen<String> strOb=new Gen<String> ("Hello 賈海天");
		strOb.showType();
		String s=strOb.getObject();
		System.out.println("value="+s);
		
	}

  

執行結果是:

T的實際類型是:java.lang.Integer

value=123

T的實際類型是:java.lang.String

value=Hello 賈海天


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM