diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 518fae0ed48e89d02722cbafb724b72d484918a8..78eb07c0c6030b6096ce2fb208ba8ca8ac08f5bf 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -8,23 +8,25 @@ - - - - - + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml index a55bdf49ab9345a634e1a117abe70771ddd5e849..cd62da29414a76aa6ba10fe81cfd141e07a638de 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -13,6 +13,8 @@ + + diff --git a/.idea/misc.xml b/.idea/misc.xml index 189ff21ed23151bc41d1180ab129fc6a59f425e1..de79f7d206451638918fd36b501f2420b2b86865 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,3 +1,4 @@ + @@ -16,6 +17,7 @@ diff --git a/README.md b/README.md index bbb8c9b7912bd58c79678aaa9024cfab4bf0c6b9..0314411ce804460c7907286b00b569ef4f5a2639 100644 --- a/README.md +++ b/README.md @@ -202,6 +202,12 @@ ## 状态模式的总结 ![img.png](img/img_state_pattern_summary.png) +# 迭代器模式 +![img.png](img/img_iterator_pattern_concept.png) + +## 迭代器模式的结构图 +![img.png](img/img_iterator_pattern_struct.png) + 1. 使用 Readme.md 来支持不同的语言, Readme\_en.md: 支持英文, Readme\_zh.md: 支持中文 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 小的进步,才是大的开始!!! diff --git a/byv-iterator-patttern-17/.gitignore b/byv-iterator-patttern-17/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..5ff6309b7199129c1afe4f4ec1906e640bec48c6 --- /dev/null +++ b/byv-iterator-patttern-17/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/byv-iterator-patttern-17/pom.xml b/byv-iterator-patttern-17/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..bde81c4a623d9f64ccc4836038d3a2aa2d2fb92c --- /dev/null +++ b/byv-iterator-patttern-17/pom.xml @@ -0,0 +1,58 @@ + + + 4.0.0 + + org.example + byv-iterator-patttern-17 + 1.0-SNAPSHOT + + + 8 + 8 + UTF-8 + + + + + org.projectlombok + lombok + 1.18.28 + compile + + + org.dom4j + dom4j + 2.1.3 + + + jaxen + jaxen + 1.1.6 + + + log4j + log4j + 1.2.12 + + + org.slf4j + slf4j-api + 1.7.36 + + + com.alibaba + fastjson + 1.2.62 + + + junit + junit + 4.12 + compile + + + + + \ No newline at end of file diff --git a/byv-iterator-patttern-17/src/main/java/com/boyunv/iterator/example01/ConcreteIterator.java b/byv-iterator-patttern-17/src/main/java/com/boyunv/iterator/example01/ConcreteIterator.java new file mode 100644 index 0000000000000000000000000000000000000000..b69aae18011584a9a7afc7c3873a5f9dd999b0e1 --- /dev/null +++ b/byv-iterator-patttern-17/src/main/java/com/boyunv/iterator/example01/ConcreteIterator.java @@ -0,0 +1,41 @@ +package com.boyunv.iterator.example01; +/* + *@description + *具体的迭代器 + *@author boyunv + *@create 2023/8/31 22:46 + *@version 1.0 + */ + +import java.util.ArrayList; +import java.util.NoSuchElementException; + +public class ConcreteIterator implements Iterator{ + + private int cursor;//游标 + + private ArrayList arrayList;//容器 + + public ConcreteIterator( ArrayList arrayList) { + this.cursor = 0; + this.arrayList = arrayList; + } + + @Override + public boolean hasNext() { + return cursor!=arrayList.size(); + } + + @Override + public void next() { + cursor++; + } + + @Override + public E currentItem() { + if (cursor>= arrayList.size()){ + throw new NoSuchElementException(); + } + return arrayList.get(cursor); + } +} diff --git a/byv-iterator-patttern-17/src/main/java/com/boyunv/iterator/example01/Iterator.java b/byv-iterator-patttern-17/src/main/java/com/boyunv/iterator/example01/Iterator.java new file mode 100644 index 0000000000000000000000000000000000000000..cfc1580486e6f1b8c613468e55571c61c70d5e99 --- /dev/null +++ b/byv-iterator-patttern-17/src/main/java/com/boyunv/iterator/example01/Iterator.java @@ -0,0 +1,19 @@ +package com.boyunv.iterator.example01; +/* + *@description + * 迭代器接口 + *@author boyunv + *@create 2023/8/31 22:44 + *@version 1.0 + */ + +public interface Iterator { + //判断集合是否有下一个元素 + boolean hasNext(); + + //将有游标的后移一位 + void next(); + + //返回当前游标指定的元素 + E currentItem(); +} diff --git a/byv-iterator-patttern-17/src/main/java/com/boyunv/iterator/example01/tet.java b/byv-iterator-patttern-17/src/main/java/com/boyunv/iterator/example01/tet.java new file mode 100644 index 0000000000000000000000000000000000000000..068309e3799d5eb751fdf0be771ebc0dd57a57e7 --- /dev/null +++ b/byv-iterator-patttern-17/src/main/java/com/boyunv/iterator/example01/tet.java @@ -0,0 +1,28 @@ +package com.boyunv.iterator.example01; +/* + *@description + * + *@author boyunv + *@create 2023/8/31 7:51 + *@version 1.0 + */ + +import java.util.ArrayList; + +public class tet { + public static void main(String[] args) { + ArrayList names=new ArrayList<>(); + names.add("lisi"); + names.add("zs"); + names.add("ww"); + names.add("zz"); + + Iterator iterator=new ConcreteIterator<>(names); + while (iterator.hasNext()){ + System.out.println(iterator.currentItem()); + + iterator.next(); + } + + } +} diff --git a/byv-iterator-patttern-17/src/main/resources/config.xml b/byv-iterator-patttern-17/src/main/resources/config.xml new file mode 100644 index 0000000000000000000000000000000000000000..7cbe016568f295adf6621d9d76f83604173b20e5 --- /dev/null +++ b/byv-iterator-patttern-17/src/main/resources/config.xml @@ -0,0 +1,4 @@ + + + com.boyunv.strategy.example03.MT1101HandlerStrategy + \ No newline at end of file diff --git a/img/img_iterator_pattern_concept.png b/img/img_iterator_pattern_concept.png new file mode 100644 index 0000000000000000000000000000000000000000..7c7f32230f436fa91fb5f35e107d01fa898ca882 Binary files /dev/null and b/img/img_iterator_pattern_concept.png differ diff --git a/img/img_iterator_pattern_struct.png b/img/img_iterator_pattern_struct.png new file mode 100644 index 0000000000000000000000000000000000000000..b17a861c8692b86b5ed12886490907ca4be8c300 Binary files /dev/null and b/img/img_iterator_pattern_struct.png differ