iterator

Java 集合

ぐ巨炮叔叔 提交于 2020-03-14 08:20:20
所有集合类都位于java.util包下。集合中只能保存对象(保存对象的引用变量)。当我们把一个对象放入集合中后,系统会把所有集合元素都当成Object类的实例进行处理。 Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些接口或实现类。 Set和List接口是Collection接口派生的两个子接口,Queue是Java提供的队列实现,类似于List。 Map实现类用于保存具有映射关系的数据(key-value)。 Set、List和Map可以看做集合的三大类。 List集合是有序集合,集合中的元素可以重复,访问集合中的元素可以根据元素的索引来访问。 Set集合是无序集合,集合中的元素不可以重复,访问集合中的元素只能根据元素本身来访问(也是不能集合里元素不允许重复的原因)。 Map集合中保存Key-value对形式的元素,访问时只能根据每项元素的key来访问其value。 接口 实现 历史集合类 Set HashSet TreeSet List ArrayList Vector LinkedList Stack Map HashMap Hashtable TreeMap Properties Collection Collection接口支持如添加和除去等基本操作。设法除去一个元素时

java中Map遍历的方法

让人想犯罪 __ 提交于 2020-03-14 04:20:34
1 public class testMap { 2 public static void main(String[] args) { 3 4 Map<String, String> map=new HashMap<String,String>(); 5 map.put("a", "aaaa"); 6 map.put("b", "bbbb"); 7 map.put("c", "cccc"); 8 map.put("d", "dddd"); 9 map.put("e", "eeee"); 10 11 // iterator 遍历 12 Set set=map.keySet(); 13 for(Iterator iter=set.iterator();iter.hasNext();){ 14 String key=(String) iter.next(); 15 String value=(String) map.get(key); 16 System.out.println(key+"===="+value); 17 } 18 19 20 // 增强for循环遍历 21 // 查找键(key) 22 for(Object key:map.keySet()){ 23 System.out.println("集合的键是"+"#########"+key); 24 } 25 // 查找值

acm的STL容器之Map篇

半腔热情 提交于 2020-03-12 11:49:52
1.对map的简单介绍  Map是STL的一个关联容器,它提供一对一(其中第一个称为关键字,每个关键字只能在map中出现一次,第二个称为该关键字的值)的数据处理能力。 这里说下map内部数据的组织,map内部自建一颗红黑树,这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的。 2.map功能介绍  map利用k-v,即Key - value。key 和 value可以声明成任意你需要的类型。 查找的复杂度 基本是Log (N),如果有1000个记录,最多查找10次,1,000,000个记录,最多查找20次。 map的常用操作: 快速插入Key -Value 记录。 快速删除记录 根据Key 修改value记录。 遍历所有记录。 3.map的声明   需要声明头文件,并使用命名空间std。 #include<iostream> #include<map> using namespace std;  声明一个map。根据个人命名规范习惯,推荐int-int类型的map叫 iimap ,如果是<int,string>类型的推荐叫 ismap 一半声明了map后,为了以后查询、遍历、删除等方便,我们顺便声明 iterator map<int,int> iimap;map<int,int>::iterator iter;   4.数据的插入、删除、数量、清空  先不写查询

15.迭代器模式

依然范特西╮ 提交于 2020-03-12 04:17:03
迭代器模式 一、迭代器模式 1.基本介绍 1)如果我们集合元素是用不同的方式实现的,有数组,还有java的集合类等,当客户端要遍历这些集合元素时就要使用多种遍历方式,还会暴露元素的内部结构,可以考虑使用迭代器模式解决。 2)提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示。 2.原理类图 1)Iterator:迭代器接口,是系统提供,含义hasNext,next,remove 2)Concretelterator:具体的迭代器类,管理迭代 3)Aggregate:一个统一的聚合接口,将客户端和具体聚合解耦 4)ConcreteAggreage:具体的聚合持有对象集合,并提供一个方法,返回一个迭代器,该迭代器可以正确遍历集合 5)Client:客户端,通过Iterator和Aggregate 依赖子类 二、迭代器模式应用实例 ​ 编写程序展示一个学校院系结构:要在一个页面中展示出学校的院系组成,一个学校有多个学院一个学院有多个系。 1.代码实现 public class Client { public static void main(String[] args) { //创建学院 List<College> collegeList = new ArrayList<College>(); ComputerCollege

使用JSR-303进行后台数据校验

*爱你&永不变心* 提交于 2020-03-11 14:27:38
一、在SringMVC中使用 使用注解 1、准备校验时使用的JAR validation-api-1.0.0.GA.jar:JDK的接口; hibernate-validator-4.2.0.Final.jar是对上述接口的实现; log4j、slf4j、slf4j-log4j 2、编写需要校验的bean @NotNull(message="名字不能为空") private String userName; @Max(value=120,message="年龄最大不能查过120") private int age; @Email(message="邮箱格式错误") private String email; 3、校验方法 @RequestMapping("/login") public String testValid(@Valid User user, BindingResult result){ if (result.hasErrors()){ List<ObjectError> errorList = result.getAllErrors(); for(ObjectError error : errorList){ System.out.println(error.getDefaultMessage()); } } return "test"; } 备注:这里一个

转:使用JSR-303进行校验 @Valid

[亡魂溺海] 提交于 2020-03-11 14:27:10
一、在SringMVC中使用 使用注解 1、准备校验时使用的JAR validation-api-1.0.0.GA.jar:JDK的接口; hibernate-validator-4.2.0.Final.jar是对上述接口的实现; log4j、slf4j、slf4j-log4j 2、编写需要校验的bean @NotNull(message="名字不能为空") private String userName; @Max(value=120,message="年龄最大不能查过120") private int age; @Email(message="邮箱格式错误") private String email; 3、校验方法 @RequestMapping("/login") public String testValid(@Valid User user, BindingResult result){ if (result.hasErrors()){ List<ObjectError> errorList = result.getAllErrors(); for(ObjectError error : errorList){ System.out.println(error.getDefaultMessage()); } } return "test"; } 备注:这里一个

JAVA中ListIterator和Iterator详解与辨析

孤街浪徒 提交于 2020-03-11 04:26:45
在使用 Java 集 合的时候,都需要使用Iterator。但是java集合中还有一个迭代器ListIterator,在使用List、ArrayList、 LinkedList和Vector的时候可以使用。这里有一点需要明确的时候,迭代器指向的位置是元素之 前的位置,如下图所示:   这里假设集合List由四个元素List1、List2、List3和List4组成,当使用语句Iterator it = List.Iterator()时,迭代器it指向的位置是上图中Iterator1指向的位置,当执行语句it.next()之后,迭代器指向的位置后 移到上图Iterator2所指向的位置。 首先看一下Iterator和ListIterator迭代器的方法有哪些。 Iterator迭代器包含的方法有: hasNext():如果迭代器指向位置后面还有元素,则返回 true ,否则返回false next():返回集合中Iterator指向位置后面的元素 remove():删除集合中Iterator指向位置后面的元素 ListIterator迭代器包含的方法有: add(E e): 将指定的元素插入列表,插入位置为迭代器当前位置 之前 hasNext():以正向遍历列表时,如果列表迭代器后面还有元素,则返回 true ,否则返回false hasPrevious():如果以逆向遍历列表

Java——集合

假如想象 提交于 2020-03-10 02:59:49
文章目录 五、集合 1、集合简介 2、List 2.1 ArrayList 2.2 LinkedList 2.3 区别 2.4 遍历List 2.5 List和Array转换 List -> Array Array -> List 3、编写equals方法 4、Map 4.1 遍历Map 5、编写equals和hashCode 6、EnumMap 7、TreeMap 8、Properties 9、Set 9.1 TreeSet 10、Queue 10.1 LinkedList 11、PriorityQueue 12、Deque 13、Stack 14、Collections 14.1 创建空集合 14.2 创建单元素集合 14.3 排序 14.4 洗牌 14.5 不可变集合 五、集合 1、集合简介 在Java中,如果一个Java对象可以在内部持有若干其他Java对象,并对外提供访问接口,我们把这种Java对象称为集合。很显然,Java的数组可以看作是一种集合。 String [ ] ss = new String [ 10 ] ; // 可以持有10个String对象 ss [ 0 ] = "Hello" ; // 可以放入String对象 String first = ss [ 0 ] ; // 可以获取String对象 为什么在又了数组这种数据类型后,还需要其他集合类?

Iterator和ListIterator区别

六月ゝ 毕业季﹏ 提交于 2020-03-08 21:48:51
我们在使用List,Set的时候,为了实现对其数据的遍历,我们经常使用到了Iterator(迭代器)。使用迭代器,你不需要干涉其遍历的过程,只需要每次取出一个你想要的数据进行处理就可以了。 但是在使用的时候也是有不同的。List和Set都有iterator()来取得其迭代器。对List来说,你也可以通过listIterator()取得其迭代器,两种迭代器在有些时候是不能通用的,Iterator和ListIterator主要区别在以下方面 1. ListIterator有add()方法,可以向List中添加对象,而Iterator不能 2. ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。 3. ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。 4. 都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iierator仅能遍历,不能修改。 因为ListIterator的这些功能,可以实现对LinkedList等List数据结构的操作。其实

ListIterator源码逐条解析

点点圈 提交于 2020-03-08 18:15:40
一家之言 姑妄言之 絮絮叨叨 不足为训 ListIterator接口注释翻译:    列表的迭代器,它允许程序员以任意方向遍历列表,在迭代期间修改列表,并获取迭代器在列表中的当前位置。ListIterator没有当前元素。它的游标位置总是位于调用previous()返回的元素和调用next()返回的元素之间。长度为n的列表的迭代器有n+1个可能的光标位置,如下面的插入符号(^)所示: Element(0) Element(1) Element(2) Element(3) … Element(n-1) ^ ^ ^ ^ ^    注意,remove和set(object)方法不是根据游标位置定义的。它们被定义为对调用next()或previous()返回的最后一个元素进行操作。    该接口是Java集合框架的成员。 笔者废话:    这个接口的注释说的我也是云里雾里,但是我们大概可以从中略窥一二。首先它说明了我们这个接口是可以从任意方向遍历的。如果你仔细看过这个接口内的方法声明,也就明白了这个“任意方向”的含义。通俗来说,它有了所谓的“ 前驱节点 ”和“ 后继节点 ”。    我相信看到这两个名词你可能就明白了这个接口的本意,它就是一个 双向链表 ,不过我们平常也叫它 双链表 。    其次,它也告诉我们这个接口的游标是不指向元素的,它位于 前驱节点 和 后继节点 之间