Java集合类

0.
在讲集合类之前先提一下泛型类,泛型类是引用类型,是堆对象,主要是引入了类型参数这个概念。
下面的Cone类就是一个泛型类。

class Cone<E>{
     double height;
     E bottom;
     public Cone(E bottom) {
         this.bottom = bottom;
     }
}

在main方法中的使用:

Cone<Integer> cone = new Cone<Integer>(5); 

Java中的泛型类和C++中的模板看起来相似,实际上有很大不同。泛型类中的泛型变量只能调用Object类中的方法。另外,泛型类创建实例时<>中必须是引用数据类型而不能是基本数据类型。Java集合框架中很多泛型类。

1.
Java集合:保存多个其他对象的对象,不能保存基本数据类型。
Collection框架结构大致如下:
Collection框架
List集合的实现:
①LinkedList采用双向循环链表实现
②ArrayList采用变长数组算法实现
③Vector采用变长数组算法实现

1.1 ArrayList和Vector的区别:
区别一:Vector是线程同步的,ArrayList不是
区别二:ArrayList和Vector都有一个初始的容量大小,当存入他们里面的元素的个数超过容量时,就需要增加ArrayList和Vector的存储空间。Vector增长原来的一倍,ArrayList增加原来的0.5倍。Vector可以设置增长空间的大小,而ArrayList没有提供设置增长空间的方法。

1.2集合(Collection)上的基本操作(增、删、改、查) //请参考API
1.3 集合与集合的基本操作(交、并、补、差)//请参考API

1.4 集合的遍历
通过迭代器iterator来遍历整个集合是最高效的。主要用到了iterator的两个方法:
①hasNext() 检查游标是否有下一个元素
②next() 游标移动到下一个元素,并返回这个元素的引用
用while循环配合这两个方法,可以迭代处理集合的所有元素
Eg:

 package ex;    
 import java.util.ArrayList;
 import java.util.Iterator;

 public class Test {  
     public static void main(String[] args) {
          ArrayList<Integer> arr = new ArrayList<Integer>();
          for(int i=0;i<10;i++) {
              arr.add(i);
          }
          Iterator<Integer> iterator = arr.iterator();
          while(iterator.hasNext()) {
              System.out.print(iterator.next() + " ");
          }
     }
 }

 //运行结果:
 //0 1 2 3 4 5 6 7 8 9 

注:迭代时可以使用迭代器remove()方法删除刚刚迭代的元素,但不能用集合方法add,remove,set等更改集合元素
Map:
HashMap和Hashtable的主要区别:
①线程安全。在需要完全的线程安全时使用Hashtable
②速度。HashMap的速度优于Hashtable
2.数组和集合的转换
数组转集合:

 package ex;    
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;

 public class Test {  
     public static void main(String[] args) {
          Integer []a =new Integer[] {1,2,3,4,5};
          List<Integer> arr = Arrays.asList(a);
     }
 }

集合转数组:

 package ex;    
 import java.util.ArrayList;

 public class Test {  
     public static void main(String[] args) {
          ArrayList<Integer> arr = new ArrayList<Integer>();
          for(int i=0;i<10;i++) {
              arr.add(i);
          }
          Integer[] a = arr.toArray(new Integer[] {});
     }
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值