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 贾海天

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值