Java数据结构和类有哪些?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)
本文出自 “12268666” 博客,请务必保留此出处http://12278666.blog.51cto.com/12268666/1909689
以上是关于Java数据结构和类有哪些?的主要内容,如果未能解决你的问题,请参考以下文章