框架下的支撑

       一篇博文中这样写到:所有抽象出来的数据结构和操作(算法)统称Java集合框架(Java Collection Framework)。这是因为在java语言中,设计者对常用的结构和算法做了一些规范(接口)和实现(具体实现接口的类)。这样,在具体应用时,就不必考虑数据结构和算法的具体实现了,只需在这些类的基础上创建出对象,然后直接调用就可以了,很大程度上提高了编程效率。自己在看了这些之后,还是无法理解集合框架的,在百度百科中间有这么一段:都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。接口:即表示集合的抽象数据类型。接口提供了让我们对集合中所表示的内容进行单独操作的可能。  实现:也就是集合框架中接口的具体实现。实际它们就是那些可复用的数据结构。 算法:在一个实现了某个集合框架中的接口的对象身上完成某种有用的计算的方法,例如查找、排序等。这样的一个说明,让我这个半瓶子还摇晃的人粗略的了解了集合框架的一个真实用途:把某些算法封装成接口,在实例化的时候通过对象构造实现具体运用。


      在说明用途之后,下面一个很重要的概念就是集合的一个简单分类。常用的集合有很多,最常用的三种分别是set接口及其子类,list接口及其子类,map接口及其子类。当然除了这三种常用的,集合还有queue接口及其子类,enumeration接口及其子类等若干个。根据各自功能的不同划分为不同的作用。


==================================set====================================
       Set是很简单的一个集合框架,形象的一个比喻是裤兜,即简单的存放即可,并无太多的实现要求。Set实现有以下几个方面的要求:对象是无序的、对象是互异的、不能通过索引直接获取的。前两个很容易理解,在高中集合论的基础上,这些都还是可以想象到的,但最后一条——不能通过索引直接获取,小费了一番周折,个人理解是这样的,因为set特定的无序性,很大程度上我们无法预估该数据对象的内存地址,这样就不能在不明白的情况下去寻找某一个需要的数据或者对象。这类似于我们无法通过名字去寻找一个人一样,这样的特征太多的会有,你就无法预估一个范围,寻找起来就不是一件易事。这也是在很大程度上展现了计算机的一个小弊端,机子是死的,外加的软件才是主导和灵魂,长的再风光,没有高贵的精神,一切都是浮云。


        在API文档中,set有着以下的一些子类,囊括了各种方式,下面简要摘取并对实现方法做一个简单的小议。

 

      在set中常用的又有以下几种:add、addAll、clear、contions以及isEmpty、remove和size等。
主要的一个运用方法有着以下的几点吧,首先看一下程序代码:
//构造测试对象

     SetTest st=new SetTest();
		//构造输出对象
		java.util.Collection sSet=st.getUserSet(3);
		//输出显示
		System.out.println(""+sSet.size());


因为set不能通过索取获得,我们还要set的迭代器
java.util.Iterator<Student> it=sSet.iterator();
进而遍历获取:

    //遍历
		while(it.hasNext()){
			Student stu=it.next();
			stu.showInfo();
		}

================================List=====================================
相对set来说,list的最大特点是有序性,即所有元素的排布遵循一定规则。List常见的方法有很多种,具体相见API文档,下图也是一部分方法显示



常见的list方法有以下几种:addAll、get、clear、add、size。toArrary等。具体使用的时候要根据方法的不同要求具体使用。
==================================map===================================
Map接口相对来说则更加规范性,它是简单一对一模式,即术语所说的键值对,一个key(键),一个value(值),两者是一个一一对应关系。Map中有一条规则就是键不能重复,但值却可以重复。下图为map简单方法示例:



当然看了上面这些觉得自己还是不是特别懂,但没办法,听一次懂得应该是天才所为,自认不是天才,那么所说的一次即懂在我这里也就不合适了。

下附以前学习时胡老师所敲的一段代码,帮助加深理解(是一个map测试):

public static void main(String args[]){
		Map<String ,String>map=new HashMap<String ,String>();
		map.put("2", null);
		map.put("3", null);
		map.put("3", null);
		map.put("4", null);
		map.put("2", null);
		map.put("1", null);
		map.put("6", null);
		map.put("7", null);
		map.put("4", null);
		map.put("5", null);
		map.put("6", null);
		System.out.println();
		//获得输入数值个数
		System.out.println(map.size());
		//获得???
		System.out.println(map.get(0));
		for(int i = 0; i < 100; i++) {
			map.put(String.valueOf(i), String.valueOf(i));
		}
	}
    }

[/size][/size]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值