java总结-集合-1_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java总结-集合-1

java总结-集合-1

 2015/1/11 0:51:18  xuehanxin  程序员俱乐部  我要评论(0)
  • 摘要:记性逐渐不好,有的东西忘记,本文复习备忘用,先从最基本的java基础集合开始,集合分为Collection接口和Map接口,这两个接口又衍生出了很多子接口,下面对着2个接口分别作介绍。一,collection接口直接实现Collection的类和继承他的接口下图可以看到有4个接口4个类,下面主要对AbstractCollection类和List,Queue,Set接口进行逐一研究Collection接口中定义的方法如下图实现他的类和继承他的接口都这些方法,这些方法的具体功能就不多介绍
  • 标签:总结 Java

记性逐渐不好,有的东西忘记,本文复习备忘用,先从最基本的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如图

?



?效率实际是比较低下的

?

  • 大小: 10.5 KB
  • 大小: 13.1 KB
  • 大小: 13.8 KB
  • 大小: 13.8 KB
  • 大小: 13.8 KB
  • 查看图片附件
上一篇: 计算机是完美的扑克玩家? 下一篇: 没有下一篇了!
发表评论
用户名: 匿名