记性逐渐不好,有的东西忘记,本文复习备忘用,先从最基本的java基础集合开始,集合分为Collection接口和Map接口,这两个接口又衍生出了很多子接口,下面对着2个接口分别作介绍。
一,collection接口
直接实现Collection的类和继承他的接口下图
?可以看到有4个接口4个类,下面主要对AbstractCollection类和List,Queue,Set接口进行逐一研究
Collection接口中定义的方法如下图
?
?实现他的类和继承他的接口都这些方法,这些方法的具体功能就不多介绍,其中很多方法的实现都由monospace; font-size: 1em; line-height: 18px;">AbstractCollection来完成,AbstractCollection的方法如下图
?
?
AbstractCollection类对Collection接口的方法进行了实现,并且重写了toString方法,方法前面有小A的表示抽象方法,这个就交给具体的继承类根据自己的特性自己实现,具体的方法有size方法和iterator()方法,size方法主要是实现队列接口Queue的类进行重写,如ArrayBlockingQueue的size方法如图
?
每个实现了iterator方法的类都有自己的迭代器类来处理数据遍历如ArrayList类的迭代器类实现如下图:
?ArrayBlockingQueue类的实现方法如下:
?
?
?简单找出两个集合总相同的元素的方法
?
class="java" name="code">package basic.collection.basic; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Random; /** * <p>Title: Test1.java</p> * <p>Description: 从一个集合中 * <p>Copyright: Copyright (c) 2014</p> * @author 雪含心 * @date 2015年1月9日 */ public class Test1 { public static void main(String[] args) { Collection<String> c1 = new ArrayList<String>(); System.out.println("遍历c1"); for(int i = 0; i < 10; i ++){ String ranStr = i + "|"; System.out.print( ranStr); c1.add(ranStr); } System.out.println(); System.out.println("遍历c2"); Collection<String> c2 = new ArrayList<String>(); for(int j = 1; j < 20; j ++){ Random random = new Random(); String ranStr = random.nextInt(j) + "|"; System.out.print(ranStr); c2.add(ranStr); } System.out.println(); // 从c1中删除不包含c2的元素,即留住2个集合都有的元素,List会有重复 c2.retainAll(c1); System.out.println("c2的大小 " + c2.size()); for(String s:c2){ System.out.print(s); } System.out.println(); System.out.println("遍历s1"); Collection<String> s1 = new HashSet<String>(); for(int i = 0; i < 20; i ++){ String ranStr = i + "|"; System.out.print( ranStr); s1.add(ranStr); } System.out.println(); System.out.println("遍历s2"); Collection<String> s2 = new HashSet<String>(); for(int j = 1; j < 20; j ++){ Random random = new Random(); String ranStr = random.nextInt(j) + "|"; System.out.print(ranStr); s2.add(ranStr); } // 从s1中删除不包含s2的元素,即留住2个集合都有的元素,Set不重复 s2.retainAll(s1); System.out.println(); System.out.println("s2的大小 " + s2.size()); for(String s:s2){ System.out.print(s); } } }
?
?可以看到 这里面用到了AbstractCollection方法的retainAll如图
?
?效率实际是比较低下的
?