详解java中的Collections类

论坛 期权论坛 脚本     
niminba   2021-5-23 02:50   1284   0

一般来说课本上的数据结构包括数组、单链表、堆栈、树、图。我这里所指的数据结构,是一个怎么表示一个对象的问题,有时候,单单一个变量声明不堪大用,比如int,String,double甚至一维数组、二维数组无法完全表达你要表达的东西,而定义一个类Class有太过麻烦,这时候,你可以考虑一下用Java中的Collections类。使用Collections类,必须在文件头声明import java.util.*;

一、动态、有序、可变大小的一维数组Vector与ArrayList 

Collections类里面包括动态、有序、可变大小的一维数组Vector与ArrayList。 

Vector与ArrayList,两者唯一的差别是:vector自带线程互斥,多个线程对其读写会抛出异常,而arraylist则允许多个线程读写,其他部分是一模一样的,换句话说,如果是单线程在读写,使用Vector与ArrayList没有任何区别,但现在编程基本都用ArrayList,使用Vector有点非主流了。
 1、Vector的使用如下:

 public static void Vectortest() {
 // Vector<Double>表示这个vector只能存放double
 // Vector<String>表示这个vector只能存String
 // 虽然Vector<Object> vector=new Vector<Object>();等价于Vector vector=new
 // Vector();但是,eclipse中这样写会警告,表示你这个Vector不规范,╮(╯▽╰)╭
 Vector<Object> vector = new Vector<Object>();
 vector.add(1.6);
 vector.add(2.06);
 vector.add(1);
 System.out.println("单纯的add表示从结尾加入元素:" + vector);
 System.out.println("size()能求出vector的所含元素的个数:" + vector.size());
 vector.remove(1);
 System.out.println("remove(1)表示删去第1个元素,由于计数从0开始,也就是2.06这个元素:" + vector);
 vector.remove(vector.lastElement());
 System.out.println("删去最后一个元素的vector为:" + vector);
 vector.add(0, 1.8888);
 System.out.println("在第0个位置加入1.8888这个元素:" + vector);
 vector.set(0, "a");
 System.out.println("把第0个位置这个元素改为a:" + vector);
 }

这段方法如果在主函数调用:

System.out.println("======Vector数据结构的测试开始======");
 Vectortest();
System.out.println("======Vector数据结构的测试结束======");

运行结果如下: 
======Vector数据结构的测试开始======
 单纯的add表示从结尾加入元素:[1.6, 2.06, 1]
 size()能求出vector的所含元素的个数:3
 remove(1)表示删去第1个元素,由于计数从0开始,也就是2.06这个元素:[1.6, 1]
 删去最后一个元素的vector为:[1.6]
 在第0个位置加入1.8888这个元素:[1.8888, 1.6]
 把第0个位置这个元素改为a:[a, 1.6]
 ======Vector数据结构的测试结束======

2、ArrayList

 public static void ArrayListtest() {
 ArrayList<Double> arraylist = new ArrayList<Double>();
 arraylist.add(1.0);
 arraylist.add(4.0);
 arraylist.add(5.0);
 arraylist.add(2.3);
 System.out.println("单纯的add表示从结尾加入元素:" + arraylist);
 System.out.println("size()能求出所含元素的个数:" + arraylist.size());
 arraylist.remove(1);
 System.out.println("remove(1)表示删去第1个元素,由于计数从0开始,也就是4这个元素:" + arraylist);
 arraylist.remove(arraylist.size() - 1);
 System.out.println("删去最后一个元素的arraylist为:" + arraylist);
 arraylist.add(0, 1.8888);
 System.out.println("在第0个位置加入1.8888这个元素:" + arraylist);
 arraylist.set(0, 9.0);
 System.out.println("把第0个位置这个元素改为a:" + arraylist);
 Collections.sort(arraylist);
 System.out.println("如果arraylist不是抽象类型,则支持排序" + arraylist);

 }

 这里可以看到ArrayList删除最后一个元素的方式与Vector有所不同,主要是ArrayList没有lastElement()这个方法来取出最后一个元素remove()掉,只能用arraylist.size() - 1来确定最后一个元素的位置。如果在主函数这样调用这段方法: 

 System.out.println("======ArrayList数据结构的测试开始======");
 ArrayListtest();
 System.out.println("======ArrayList数据结构的测试结束======");

 则得到如下的运行结果: 
======ArrayList数据结构的测试开始======
 单纯的add表示从结尾加入元素:[1.0, 4.0, 5.0, 2.3]
 size()能求出所含元素的个数:4
 remove(1)表示删去第1个元素,由于计数从0开始,也就是4这个元素:[1.0, 5.0, 2.3]
 删去最后一个元素的arraylist为:[1.0, 5.0]
 在第0个位置加入1.8888这个元素:[1.8888, 1.0, 5.0][jbWn5R"CbRgj zsBr'SfGR 3bfk>c?^j 4+S ZWWn5RCjRgN7h4(4(驅4(5MRgj,!5MM!5MM!5M!5MM!5M!5MMРР(РРР(РMMРРMРРMРРMРРMRgjv|Mj,РРРMMjv|4(rR_"vjzs4(屔V6zjW,4(5Rgj,4(аа4(4(4(4(5Rgjv|4(5j,4(4(5jv|4(5V6zjWv|4(/rvR?bbWnа4+3?cb ^*)3:vǒj B30'Wnk c R6Wj/vn*b;3B;gZW&4(Π4(r"oZjY履!M!53>g"C4(屔 MM4)1MYM/4(n&:>jr%Y1!MQM&C:>jr%!5!хgb)j&kj^cOB3/*fg3:*ǖNFgkj%履%V7 )j4(4(brZj3ro疒j惚r'&*rokkR24(

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP