Java数据结构和类有哪些?

Java数据结构和类有哪些?很多java初学者可能记不住或者记不全那么多,今天西安java培训小编为大家整理了Java数据结构和类的知识,希望对大家有所帮助.

  一、Vector类

  Vector类似于一个数组,但与数组相比在使用上有以下两个优点。
  1、使用的时候无需声明上限,随着元素的增加,Vector的长度会自动
  增加。
  2、Vector提供额外的方法来增加、删除元素,比数组操作高效。
  Vector类有三个构造函数,分别如下:
  public Vector();
  该方法创建一个空的Vector。
  public Vector(int initialCapacity);
  该方法创建一个初始长度为initialCapacity的Vector。
  public Vector(int intialCapacity,int capacityIncrement);
  该方法创建一个初始长度为initialCapacity的Vector,当向量需要增长时,增加capacityIncrement个元素。
  (1)Vector类中添加、删除对象的方法如下:
  public void add(int index,Object elemtent)
  在index位置添加对象element。
  public boolean add(Object o)
  在Vector的末尾添加对象o。
  public Object remove(int index)
  删除index位置的对象,后面的对象依次前提。
  (2)Vector类中访问、修改对象的方法如下:
  public Object get(int index)
  返回index位置对象。
  public Object set(int index,Object element)
  修改index位置的对象为element。
  (3)其它方法:
  public String toString()
  将元素转换成字符串。
  public int size()
  返回对象的长度。
  例1:操作Vector对象,进行元素的添加、插入、修改和删除。程序输出结果如图1所示。源程序代码如下:
  //程序文件名为UseVector.java
  import java.util.Vector;//引入JDK的Vector类
  public class UseVector
  {
  public static void main(String[] args)
  {
  Vector vScore=new Vector();
  vScore.add("86");//添加元素
  vScore.add("98");//添加元素
  vScore.add(1,"99");//插入元素
  //输出结果
  for(int I=0;I<vscore.size();i++) </vscore.size();i++)
  {
  System.out.print(vScore.get(i)+" ");
  }
  vScore.set(1,"77");//修改第二个元素
  vScore.remove(0);//删除第一个元素
  System.out.println("\n修改并删除之后");
  for(int I=0;I<vscore.size();i++) </vscore.size();i++)
  {
  System.out.print(vScore.get(i)+" ");
  }
  System.out.println(:\n转换成字符串之后的输出\n" +vScore.toString());
  }
  };
  

  图1:操作Vector对象的输出结果

  二、Hashtable类

  Hashtable类存储的是对象的名-值对。将对象的名和它的值相关联同时存储,并可以根据对象名来提取它的值。在Hashtable中,一个键名只能对应着一个键值,然而一个键值可以对应多个键名,键名必须是惟一的。构造函数以及常用方法如下:
  public Hashtable()
  构建散列表。
  public Hashtable(int initialCapacity)
  构建长度为initialCapacity的散列表。
  public int size()
  返回散列表的名的个数。
  public Object remove(Object key)
  删除散列表中key名及其对应的value值。
  public Object put(Object key,Object value)
  将对象名key和对象值value存放到散列表中。
  public Object get(Object key)
  返回散列表key名对应的值。
  public String toString()
  转换成字符串。
  例2:操作Hashtable对象,进行添加、修改、删除等操作,输出结果如图2所示。源程序代码如下:
  //程序文件名为UseHashtable.java
  import java.util.hashtable;
  public class UseHashtable
  {
  public static void main(String[] args)
  {
  Hashtable hScore=new Hashtable();
  hScore.put("张一","86");
  hScore.put("李二","98");
  hScore.put("海飞","99");
  System.out.println("转换成字符串之后的输
  出:"+hScore.toString());
  hScore.put("李二 ","77");
  hScore.remove("张一");
  System.out.println("修改并删除之后");
  System.out.println("转换成字符串之后的输出:"+hScore.toString());
  }
  }
  图2:操作Hashtable对象输出结果

  三、Enumeration接口

  实现Enumeration接口的对象生成一系列元素,通过nextElement()方法依次读取下一个元素。只有以下两个方法:
  public boolean hasMoreElements()
  测试是否还有元素
  public Object nextElement()
  返回枚举的下一个元素。
  Enumeration接口及其方法通常与Vector、Hashtable一起连用,用来枚举Vector中的项和Hashtable中的键名,例如:
  for(Enumeration e=v.elements();e.hasMoreElements();)
  System.out.println(e.nextElement());
  例3:使用Enumeration接口枚举Vector中的对象和Hashtable对象中的键名,并进行输出,结果如图3所示。源程序代码如下:
  //程序文件名UseEnumeration.java
  import java.util.*;
  public class UseEnumeration
  {
  public static void main(string[] args)
  {
  Vector vScore=new Vector();
  vScore.add("86");
  vScore.add("98");
  vScore.add(1,"99");
  System.out.println("Vector:"+vScore.toString());
  for(Enumeration e=vScore.elements();e.hasMoreElements();)
  System.out.println(e.nextElement());
  Hashtable hScore=new Hashtable();
  hScore.put("张一","86");
  hScore.put("李二","98");
  hScore.put("海飞","99");
  System.out.println("Hashtable:"+hScore.toString());
  for(Enumeration e=hScore.keys();e.hasMoreElements();)
  {
  String str=(String)e.nextElement();
  System.out.print(str+":");
  System.out.println(hScore.get(str));
  }
  }
  }
  

  图3:使用Enumeration接口枚举输出

  四、Date类

  Date类用来指定日期和时间,其构造函数及常用方法如下:
  public Date()
  从当前时间构造日期时间对象。
  public String toString()
  转换成字符串。
  public long getTime()
  返回自新世纪以来的毫秒数,可以用于时间计算。
  例4:测试执行循环花费的时间(数量级为毫秒),具体时间情况如图4所示。源程序代码如下:
  //程序文件名为UseDate.java
  import java.util.Date;
  public class UseDate
  {
  public static void main(String[] args)
  {
  Date dOld=new Date();
  long lOld=dOld.getTime();
  System.out.println("循环前系统时间为:"+dOld.toString());
  int sum=0
  for(int i=0;i<100;i++)
  {
  sum +=i;
  }
  Date dNew=new Date();
  long lNew=dNew.getTime();
  System.out.println("循环后系统时间为:"+dNew.toString());
  System.out.println("循环花费的毫秒数为:"+(lNew-lOld));
  }
  }
  

  图4:循环时间测试

  五、String类

  String类用于操作非数值型字符串,它提供了七类方法操作,分别为字符串创建、字符串长度、字符串比较、字符串检索、字符串截取、字符串运算和数据类型转换。
  1、字符串创建
  public String()
  构造一个空字符串。
  public String(char[] value)
  使用字符串数组value中的字符以构造一个字符串。
  public String(String original)
  使用原字符串original的拷贝以构造一个新字符串。
  2、字符串长度
  public int length()
  返回字符串的长度。
  3、字符串比较
  public boolean equals(Object anObject)
  比较字符串是否与anObject代表的字符串相同(区分大小写)。
  public boolean equalsIgnoreCase(String anotherString)
  比较字符串是否与anotherString相同(不区分大小写)。
  4、字符串检索
  public int indexOF(String str)
  返回一个字符串中str第一次出现所在的位置。
  public int indexOf(String str,int fromIndex)
  返回从fromIndex开始字符串str出现所在的位置。
  5、字符串截取
  public String substring(int beginIndex,int endIndex)
  返回benginIndex到endIndex之间的字符串。
  6、字符串运算
  运算符为“+”,表示连接运算。下面的行语句输出连接的字符串
  System.out.println("Hashtable:"+hScore.toString());
  例5:操作字符串,输出结果如图5所示。源程序代码如下:
  //程序文件名为TestString.java
  public class TestString
  {
  public static void main(String[] args)
  {
  String str=new String("The substring begins at the specified beginIndex.");
  String str1=new String("string");
  String str2=new String();
  int size=str.length();//字符串长度
  int flag=str.indexOf("substring");
  str2=str.substring(flag,flag+9);//取子字符串
  System.out.println("字符串"+str+"\n总长度为:"+size);
  if(str1.equals(str2))//判断是否相等
  System.out.println("截取的字符串为:"+str1)
  else
  System.out.println("截取的字符串为:"+str2);
  }
  }
  

  图5:操作字符串的输出

  7、数据类型转换

  各种原始数据类型与String类型之间可以通过方法相互转换。
  valueOf()系列的静态方法用于从其它对象(原始数据类型对象)转换成字符串。例如:
  public static String valueOf(Boolean b)
  public static String valueOf(char c)
  public static String valueOf(int i)
  public static String valueOf(long l)
  public static String valueOf(float f)
  public static String valueOf(double d)
  具体实例如下:
  (1)从int转换到String。
  例如:
  int intvar=1;
  String strvar;
  strvar=String.valueOf(intvar);//"1"
  (2)从float转换到String。
  例如:
  folat fltvar=9.99f;
  String strvar;
  strvar=String.valueOf(fltvar);//"9.99"
  (3)从double转换到String。
  例如:
  duble dblvar=99999999.99
  String strvar;
  strvar=String.valueOf(dblvar);//"9.999999999E7"
  (4)从char转换到String。
  例如:
  char chrvar=‘a‘;
  String strvar;
  strvar=String.valueOf(chrvar);//"a"
  (5)从String转换到int、float、long、double。
  例如:
  String intstr="10";
  String fltstr="10.1f";
  String longstr="99999999";
  String dblstr="99999999.9";
  int i=Integer.parseInt(intstr);//10
  float f=Float.parseFloat(fltstr);//10.1
  long lo=Long.parseLong(longstr);//99999999
  double d=Double.parseDouble(dblstr);//9.99999999E7
  (6)从String转换到byte、short。
  例如:
  String str="0";
  byte b=Byte.parseByte(str);//0
  short sh=Short.parseShort(str);//0
  (7)从String转换到char。
  例如:
  String str="abc";
  char a=str.charAt(0);//返回字符a
  (8)从String转换到boolean。
  例如:
  String str="true";
  Boolean flag=Boolean.valueOf(str);//true
  六、StringBuffer类
  StringBuffer类提供了一个字符串的可变序列,类似于String类,但它对存储的字符序列可以任意修改,使用起来比较String类灵活的多。它常用的构造函数为:
  StringBuffer()
  构造一个空StringBuffer对象,初始容量为16个字符。
  StringBuffer(String str)
  构造一个StringBuffer对象,初始内容为字符串str的拷贝。
  对于StringBuffer类,除了String类中常用的像长度、字符串截取、字符串检索的方法可以使用之外,还有两个较为方便的方法系列,即append方法系列和insert方法系列。
  (1)append方法系列根据参数的数据类型在StringBuffer对象的末尾直接进行数据添加。
  public StringBuffer append(boolean b)
  public StringBuffer append(char c)
  public StringBuffer append(char[] str)
  public Stringbuffer append(char[] str,int offset,int len)
  public StringBuffer append(double d)
  public StringBuffer append(float f)
  public StringBuffer append(int i)
  public StringBuffer append(long l)
  public StringBuffer append(Object obj)
  public StringBuffer append(String str)
  public StringBuffer append(StringBuffer sb)
  (2)insert方法系列根据参数的数据类型在StringBuffer的offset位置进行数据插入。
  public StringBuffer insert(int offset,boolean b)
  public StringBuffer insert(int offset,char c)
  public StringBuffer insert(int offset,char[] str)
  public StringBuffer insert(int index,char[] str,int offset,int len)
  public StringBuffer insert(int offset,double d)
  public StringBuffer insert(int offset,float f)
  public StringBuffer insert(int offset,int i)
  public StringBuffer insert(int offset,long l)
  public StringBuffer insert(int offset,Object odj)
  public StringBuffer insert(int offset,String str)
  (3)下面这个方法用于将stringbuffer对象的数据转换成字符串:
  public String toString()
  例6:基于例5进行修改,使用StringBuffer对象得到如图6所示的输出界面。
  //程序文件名为TestString.java
  public class TestString
  {
  public static void main(String[] args)
  {
  StringBuffer str=new StringBuffer(" The substring begins at the specified beginIndex.");
  StringBuffer str1=new StringBuffer("string");
  String str2=new String();
  int size=str.length();
  int flag=str.indexOf("substring");
  str2=str.substring(flag,flag+9);
  StringBuffer strOut=new StringBuffer("字符串");
  strOut.append(str);
  strOut.append("总长度为:");
  strOut.append(size);
  int f=strOut.indexOf("总");
  strOut.insert(f,‘\n‘);
  System.out.println(strOut.toString());
  if(str1.toString().equals(str2))
  System.out.println("截取的字符串为:"+str1.toString());
  else
  System.out.println("截取的字符串为:"+str2):
  }
  }
  图5/6:操作字符串的输出

  七、StringTokenizer类

  StringTokenizer类是一个实现Enumeration接口的类,它使得程序可以将字符串分成多个记号,默认情况下以空格为分隔符,例如将字符串分成多个记号,默认情况下以空格为分隔符,例如将字符串“this
is
test”分成四个单词记号。用户也可以指定分隔符。分隔符为false,分割字符串;分隔符为true,则将分隔符自身作为分割后的字符串的一部分。其构造函数和常用方法如下:
  StringTokenizer(String str)
  以字符串str构建StringTokenizer对象。
  StringTokenizer(String str,String delim)
  使用delim分隔符,以初始字符串str构建StringTokenizer对象。
  int countTokens()
  返回识别的总记号数
  boolean hasMoreTokens()
  测试是否还有识别的记号。
  boolean nextToken(String delim)
  返回字符串delim分隔的下一个记号。
  String nextToken()
  返回下一个识别的记号。
  例7:使用StringTOkenizer类分割字符串,字符串的分割情况如图7所示。源程序代码如下:
  import java.util.*;
  public class UseToken
  {
  public static void main(String[] args)
  {
  String str="数学::英语::语文::化学";
  StringTokenizer st=new StringTokenizer(str,"::");
  System.out.println(str+"\n课程数为:"+st.countTokens());
  while(st.hasMoreTokens())
  {
  System.out.println(st.nextToken("::"));
  }
  str="Hello this is a test";
  st=new StringTokenizer(str);
  System.out.println(str+"\n单词数为:"+st.countTokens());
  while(st.hasMoreTokens())
  {
  System.out.println(st.nextToken());
  }
  }
  }
  

  图7:StringTokenizer分割单词的结果输出

那么关于Java数据结构和类有哪些的问题小编就为大家介绍完了,更多java学习问题请在云间科技java论坛咨询讨论,Java学习视频资料请在技术区下载(www.yunjkj.cn)

时间: 2024-12-10 14:50:03

Java数据结构和类有哪些?的相关文章

Java数据结构系类之——链表(1):单链表及相关常用操作

package LinkList; public class Node<T> { public T data;//数据域 public Node next;//结点域 //默认构造方法 public Node(){ } //带参构造方法,非头结点初始化 public Node(T data,Node next){ this.data=data; this.next=next; } //头结点初始化 public Node(Node next){ this.next=next; } //显示结点

Java数据结构系类之——链表(2):单向循环链表及相关常用操作

package LinkList.onewaycircular; public class Node { public int data; public Node next; //头结点初始化 public Node(Node next){ this.next=next; } //一般结点初始化 public Node(int data,Node next){ this.data=data; this.next=next; } } ********************************

Java数据结构系类之——链表(3):双向链表及相关常用操作

package LinkList.doublelinklist; public class Node { public int data;//数据域 public Node next;//结点域,下一个结点 public Node prve;//结点域,前一个结点 //头结点初始化 public Node(Node next){ this.data=data; this.next=next; this.prve=null; } //非头结点初始化 public Node(int data,Nod

Java数据结构Map,List,Set及Queue相关的类图

闲来无事,把util包中相关的数据结构的类图及其关系画了一下,给大家分享一下. 总览图:  Map:  List and Set: Queue: Java数据结构Map,List,Set及Queue相关的类图

Java数据结构学习—Collections类

java.util 类 Collections java.lang.Object java.util.Collections public class Collections extends Object 此类完全由在 collection 上进行操作或返回 collection 的静态方法组成.它包含在 collection 上操作的多态算法,即"包装器",包装器返回由指定 collection 支持的新 collection,以及少数其他内容. 如果为此类的方法所提供的 colle

Java数据结构之二叉搜索树

Java数据结构之二叉搜索树 1.二叉搜索树组成 二叉搜索树又称为二叉排序树,它或者是一颗空树,或者是一颗具有如下特性的非空二叉树,需要满足一下三个条件: (1)若它的左子树非空,则左子树上所有结点的关键字均小于根结点的关键字: (2)若它的右子树非空,则右子树上所有结点的关键字均大于(可以等于)根结点的关键字. (3)左子树右子树本身又各是一颗二叉搜索树 在算法描述中,均以结点值的比较来代表其关键字的比较,因为若结点的值为类类型时,该类必须实现系统提供的java.lang.comparable

Java数据结构与算法之集合

线性表.链表.哈希表是常用的数据结构,在进行Java开发时,SDK已经为我们提供了一系列相应的类来实现基本的数据结构.这些类均在java.util包中. 一.Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object.一些Collection允许相同元素而另一些不行.一些能排序而另一些不行.Java  SDK不提供直接继承自Collection的类,Java  SDK提供的类都是继承自Collection的"子接口"如List和Set

Java数据结构和算法之链表

三.链表 链结点 在链表中,每个数据项都被包含在'点"中,一个点是某个类的对象,这个类可认叫做LINK.因为一个链表中有许多类似的链结点,所以有必要用一个不同于链表的类来表达链结点.每个LINK对象中都包含一个对下一个点引用的字段(通常叫做next)但是本身的对象中有一个字段指向对第一个链结点的引用. 单链表 用一组地址任意的存储单元存放线性表中的数据元素. 以元素(数据元素的映象)  + 指针(指示后继元素存储位置)  = 结点(表示数据元素 或 数据元素的映象) 以"结点的序列&q

Java虚拟机的类载入机制

Java虚拟机类载入过程是把Class类文件载入到内存.并对Class文件里的数据进行校验.转换解析和初始化,终于形成能够被虚拟机直接使用的java类型的过程. 在载入阶段,java虚拟机须要完毕下面3件事: a.通过一个类的全限定名来获取定义此类的二进制字节流. b.将定义类的二进制字节流所代表的静态存储结构转换为方法区的执行时数据结构. c.在java堆中生成一个代表该类的java.lang.Class对象,作为方法区数据的訪问入口. Java虚拟机的类载入是通过类载入器实现的, Java中