• 枚举器与数据操作

1)枚举器为我们提供了访问集合的方法,而且解决了访问对象的“数据类型不确定”的难题。这是面向对象“多态”思想的应用。其实是通过抽象不同集合对象的共同代码,将相同的功能代码封装到了枚举器的这个接口里,就可以用一套代码来遍历不同类型的集合。

2)每个集合类(Vector或Hashtable等)都有一个iterator方法,各集合对象可以通过这个方法把遍历本类的控制权交给Iterator接口。

3)Iterator接口提供了boolean hasNext()方法判断是否到了集合的最后一个元素;提供了E next()方法获取下一个元素。

4)通过类似于Itetator it=v.iterator();的语句将遍历v的控制权交给it;通过 while(it.hasNext()){ println(it.next().toString()); }访问v的元素。

5)定义统一的访问各集合类的方法:static void readData(Iterator it){   while(it.hasNext()){ println(it.next().toString()); }   },之后就可以用readData(v.iterator());、readData(l.iterator());、readData(ht.iterator());来访问vector、list、hashtable集合类了。。。

  • 深浅拷贝

1)浅拷贝:实质是对数据的引用,而不是开新的空间去存储。

ShareData sd1=new ShareData(1); ShareData sd2=sd1;//对sd2的操作会影响sd1的内容,因为他们本来就指向同一个内存区域。

2)浅拷贝:通过Object对象的clone方法复制自身,但只能拷贝对象,不能拷贝对象里面的元素。

ArrayList l1=new ArrayList(); List l2=(List)l1.clone();//对l2的操作会影响l1的内容。

3)深拷贝:通过实现Clonalbe接口,并,覆写clone方法,自定义对象克隆的特性。

ArrayList l1=new ArrayList(); List l2=(List)l1.clone(); for{ l2.set(     i, ( (item)l1.get(i) ).clone()    ); }//对l2的操作【不会】影响l1的内容。

  • JAVA集合类中的排序

排序要解决两个问题:i)按什么关系排序;ii)用什么方法排序。Java里为我们提供了sort排序方法,我们要做的是:指定排序规则(怎么判断对象的大小关系)。

1)第一种方法:实现Comparable接口,并,覆写compareTo(Object o)方法,然后调用Collections类的sort(List list)方法对list对象按照compareTo()方法定义的规则进行排序。

public int compareTo(Object o){  CompObj co=(CompObj)o;//类型转换 if(x!=co.x){return x-co.x;}else{return y-co.y;}  }

ArrayList l=new ArrayList(); Collections.sort(l);

2)第二种方法:在比较器Comparator中定义排序规则,然后调用Collections类的sort(List list,Comparator c)方法对list对象按照比较器Comparator定义的规则进行排序。

class ObjComparator implements Comparator{   public int compare(Object o1,Object o2){//类型转化;  //比较规则;}  }

ArrayList l=new ArrayList(); Collections.sort(l,new ObjComparator());

JAVA中的数据结构——集合类(序):枚举器、拷贝、集合类的排序的更多相关文章

  1. 动图+源码,演示Java中常用数据结构执行过程及原理

    最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想用动画来绘制数据流转过程. 主要基于jdk8, 可能会有些特性与jdk7之前不相同, 例如LinkedList Linke ...

  2. 动图+源码,演示 Java 中常用数据结构执行过程及原理

    ​阅读本文大概需要 3.7 分钟. 作者:大道方圆 cnblogs.com/xdecode/p/9321848.html 最近在整理数据结构方面的知识, 系统化看了下Java中常用数据结构, 突发奇想 ...

  3. java中的数据结构(集合|容器)

    对java中的数据结构做一个小小的个人总结,虽然还没有到研究透彻jdk源码的地步.首先.java中为何需要集合的出现?什么需求导致.我想对于面向对象来说,对象适用于描述任何事物,所以为了方便对于对象的 ...

  4. [转]详细介绍java中的数据结构

    详细介绍java中的数据结构 本文介绍的是java中的数据结构,本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类.一起来看本文吧! 也许你已经熟练使用了java.util包里面的各 ...

  5. 详细介绍java中的数据结构

    详细介绍java中的数据结构 http://developer.51cto.com/art/201107/273003.htm 本文介绍的是java中的数据结构,本文试图通过简单的描述,向读者阐述各个 ...

  6. Java中的数据结构及排序算法

    (明天补充) 主要是3种接口:List Set Map List:ArrayList,LinkedList:顺序表ArrayList,链表LinkedList,堆栈和队列可以使用LinkedList模 ...

  7. Java中的数据结构有哪些?HashMap的工作原理是什么?

    Java中常用数据结构 常用的数据结构有哈希表,线性表,链表,java.util包中有三个重要的接口:List,Set,Map常用来实现基本的数据结构 HashMap的工作原理 HashMap基于ha ...

  8. Java中的数据结构-HashMap

    Java数据结构-HashMap 目录 Java数据结构-HashMap 1. HashMap 1.1 HashMap介绍 1.1.1 HashMap介绍 1.1.2 HashMap继承图 1.2 H ...

  9. 18、Java中的 数据结构

    Java2中引入了新的数据结构 集合框架 Collection,下一节再谈论(非常重要,面试也常问). 1.枚举 (Enumeration) 1.1 Enumeration 源码: public in ...

随机推荐

  1. [Unity菜鸟] Final IK

    由于本人英文较烂,边翻译用户手册边学习. 用户手册  IK Components Final IK 包含许多强大高速的IK组件 Aim  AimIK solver是一个对CCD算法(cyclic co ...

  2. 一个简单的将GUI程序的log信息输出到关联的Console窗口中(AllocConsole SetConsoleTitle WriteConsole 最后用ShowWindow(GetConsoleWindow)进行显示)

    // .h 文件 #pragma once class CConsoleDump { public: explicit CConsoleDump(LPCTSTR lpszWindowTitle = N ...

  3. JS模块化编程

    AMD:异步模块定义,适合客户端环境,不会阻塞运行.客户端受网络影响比较大. CommonJs:适用于服务器端规范,可以同步加载,只受硬盘读写的影响.

  4. url、href、src 详解

    发现自己居然没把url.href.src关系及使用搞清楚,今天就理一下.主要包括:url.src.href定义以及使用区别.顺便试下在segmentfault来一发. URL(Uniform Reso ...

  5. poj3307

    可以证明,每个符合的数都由2,3,5,7相乘得到. 依据猜想:下一个出现的数是由前面某个数乘上这几个数之一得到的新的数. 假设之前的数均满足序列,则因为下一个数必有2,3,5,7相乘得到,而这个数之前 ...

  6. UVa 1025 (动态规划) A Spy in the Metro

    题意: 有线性的n个车站,从左到右编号分别为1~n.有M1辆车从第一站开始向右开,有M2辆车从第二站开始向左开.在0时刻主人公从第1站出发,要在T时刻回见车站n 的一个间谍(忽略主人公的换乘时间).输 ...

  7. Asp.net 后台添加Meta标签方法

    Asp.net 后台添加Meta标签方法包括keywords,CSS.JS 下面是从Asp.net 后台添加CSS.JS.Meta标签的写法,我们这里写成函数方便以后使用.如果函数放在页面类中, Pa ...

  8. multipath 安装配置

    二. 安装配置 2.1 安装Multipath 查看相关包: [root@rac1 ~]# rpm -qa|grep device-mapper device-mapper-multipath-0.4 ...

  9. UVA 11294 Wedding(2-sat)

    2-sat.不错的一道题,学到了不少. 需要注意这么几点: 1.题目中描述的是有n对夫妇,其中(n-1)对是来为余下的一对办婚礼的,所以新娘只有一位. 2.2-sat问题是根据必然性建边,比如说A与B ...

  10. this class is not key value coding-compliant for the key ##

    setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key ## 出现以上错误时很恶心,并 ...