From 657bcc142e1e0f6a8110cd822e5b837750d4d5d5 Mon Sep 17 00:00:00 2001
From: XMT-CN <542194147@qq.com>
Date: Sun, 5 Mar 2017 20:50:09 +0800
Subject: [PATCH] myDataStructure
---
group11/542194147/myDataStructure/.classpath | 8 +
group11/542194147/myDataStructure/.gitignore | 1 +
group11/542194147/myDataStructure/.project | 17 ++
.../src/com/coderising/array/ArrayUtil.java | 208 ++++++++++++++++++
.../com/coderising/array/ArrayUtilTest.java | 66 ++++++
.../coderising/litestruts/LoginAction.java | 39 ++++
.../src/com/coderising/litestruts/Struts.java | 94 ++++++++
.../com/coderising/litestruts/StrutsTest.java | 40 ++++
.../src/com/coderising/litestruts/View.java | 24 ++
.../src/com/coderising/litestruts/struts.xml | 11 +
.../src/com/coding/basic/MyArrayList.java | 133 +++++++++++
.../src/com/coding/basic/MyLinkedList.java | 194 ++++++++++++++++
.../src/com/coding/basic/MyList.java | 34 +++
.../src/com/coding/basic/MyQueue.java | 19 ++
.../src/com/coding/basic/MyStack.java | 25 +++
15 files changed, 913 insertions(+)
create mode 100644 group11/542194147/myDataStructure/.classpath
create mode 100644 group11/542194147/myDataStructure/.gitignore
create mode 100644 group11/542194147/myDataStructure/.project
create mode 100644 group11/542194147/myDataStructure/src/com/coderising/array/ArrayUtil.java
create mode 100644 group11/542194147/myDataStructure/src/com/coderising/array/ArrayUtilTest.java
create mode 100644 group11/542194147/myDataStructure/src/com/coderising/litestruts/LoginAction.java
create mode 100644 group11/542194147/myDataStructure/src/com/coderising/litestruts/Struts.java
create mode 100644 group11/542194147/myDataStructure/src/com/coderising/litestruts/StrutsTest.java
create mode 100644 group11/542194147/myDataStructure/src/com/coderising/litestruts/View.java
create mode 100644 group11/542194147/myDataStructure/src/com/coderising/litestruts/struts.xml
create mode 100644 group11/542194147/myDataStructure/src/com/coding/basic/MyArrayList.java
create mode 100644 group11/542194147/myDataStructure/src/com/coding/basic/MyLinkedList.java
create mode 100644 group11/542194147/myDataStructure/src/com/coding/basic/MyList.java
create mode 100644 group11/542194147/myDataStructure/src/com/coding/basic/MyQueue.java
create mode 100644 group11/542194147/myDataStructure/src/com/coding/basic/MyStack.java
diff --git a/group11/542194147/myDataStructure/.classpath b/group11/542194147/myDataStructure/.classpath
new file mode 100644
index 0000000000..ddd63c6d08
--- /dev/null
+++ b/group11/542194147/myDataStructure/.classpath
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/group11/542194147/myDataStructure/.gitignore b/group11/542194147/myDataStructure/.gitignore
new file mode 100644
index 0000000000..ae3c172604
--- /dev/null
+++ b/group11/542194147/myDataStructure/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/group11/542194147/myDataStructure/.project b/group11/542194147/myDataStructure/.project
new file mode 100644
index 0000000000..56bfc21f79
--- /dev/null
+++ b/group11/542194147/myDataStructure/.project
@@ -0,0 +1,17 @@
+
+
+ myDataStructure
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/group11/542194147/myDataStructure/src/com/coderising/array/ArrayUtil.java b/group11/542194147/myDataStructure/src/com/coderising/array/ArrayUtil.java
new file mode 100644
index 0000000000..7512dac816
--- /dev/null
+++ b/group11/542194147/myDataStructure/src/com/coderising/array/ArrayUtil.java
@@ -0,0 +1,208 @@
+package com.coderising.array;
+
+import java.util.Arrays;
+
+/**
+ * Array集合工具类
+ * @author 小摩托
+ *
+ */
+public class ArrayUtil {
+
+ /**
+ * 给定一个整形数组a , 对该数组的值进行置换
+ 例如: a = [7, 9 , 30, 3] , 置换后为 [3, 30, 9,7]
+ 如果 a = [7, 9, 30, 3, 4] , 置换后为 [4,3, 30 , 9,7]
+ * @param origin
+ * @return
+ */
+ public int[] reverseArray(int[] origin){
+ if(origin.length==0){
+ throw new RuntimeException("数组为空");
+ }
+ int[]exchange=new int[origin.length];
+ for(int i=origin.length-1;i>=0;i--){
+ exchange[origin.length-1-i]=origin[i];
+ }
+ return exchange;
+ }
+
+ /**
+ * 现在有如下的一个数组: int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}
+ * 要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为:
+ * {1,3,4,5,6,6,5,4,7,6,7,5}
+ * @param oldArray
+ * @return
+ */
+
+ public int[] removeZero(int[] oldArray){
+ int exchange[]={};
+ for(int i=0;i parameters) {
+
+ /*
+ 0. 读取配置文件struts.xml
+
+ 1. 根据actionName找到相对应的class , 例如LoginAction, 通过反射实例化(创建对象)
+ 据parameters中的数据,调用对象的setter方法, 例如parameters中的数据是
+ ("name"="test" , "password"="1234") ,
+ 那就应该调用 setName和setPassword方法
+
+ 2. 通过反射调用对象的exectue 方法, 并获得返回值,例如"success"
+
+ 3. 通过反射找到对象的所有getter方法(例如 getMessage),
+ 通过反射来调用, 把值和属性形成一个HashMap , 例如 {"message": "登录成功"} ,
+ 放到View对象的parameters
+
+ 4. 根据struts.xml中的 配置,以及execute的返回值, 确定哪一个jsp,
+ 放到View对象的jsp字段中。
+
+ */
+ View view=new View();
+ try {
+ SAXReader sr=new SAXReader();
+ Document document= sr.read(new File("src/com/coderising/litestruts/struts.xml"));
+ Element root=document.getRootElement();
+ List actions=root.elements("action");
+ for(Iterator it=actions.iterator();it.hasNext();){
+ Element action =it.next();
+ if(action.attribute("name").getText().equals(actionName)){
+ LoginAction loginAction=(LoginAction)Class.forName(
+ action.attribute("class").getText()).newInstance();
+ loginAction.setName(parameters.get("name"));
+ loginAction.setPassword(parameters.get("password"));
+ String loginMsg=loginAction.execute();
+ if(loginMsg.equals("success")){
+ Listresults=action.elements("result");
+ for(it=results.iterator();it.hasNext();){
+ Element result=it.next();
+ if(result.attribute("name").getText().equals("success")){
+ createView(view, loginAction, result);
+ }
+ }
+ }
+ if(loginMsg.equals("fail")){
+ Listresults=action.elements("result");
+ for(it=results.iterator();it.hasNext();){
+ Element result=it.next();
+ if(result.attribute("name").getText().equals("fail")){
+ createView(view, loginAction, result);
+ }
+ }
+ }
+ if(loginMsg.equals("error")){
+ Listresults=action.elements("result");
+ for(it=results.iterator();it.hasNext();){
+ Element result=it.next();
+ if(result.attribute("name").getText().equals("error")){
+ createView(view, loginAction, result);
+ }
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ System.out.println("have exception:"+e);
+ e.printStackTrace();
+ }
+ return view;
+ }
+
+ private static void createView(View view, LoginAction loginAction, Element result) {
+ Map msgMap=new HashMap();
+ msgMap.put("message", loginAction.getMessage());
+ view.setParameters(msgMap);
+ view.setJsp(result.getText());
+ }
+
+}
diff --git a/group11/542194147/myDataStructure/src/com/coderising/litestruts/StrutsTest.java b/group11/542194147/myDataStructure/src/com/coderising/litestruts/StrutsTest.java
new file mode 100644
index 0000000000..7fa9e9a4e5
--- /dev/null
+++ b/group11/542194147/myDataStructure/src/com/coderising/litestruts/StrutsTest.java
@@ -0,0 +1,40 @@
+package com.coderising.litestruts;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class StrutsTest {
+
+ @Test
+ public void testLoginActionSuccess() {
+
+ String actionName = "login";
+
+ Map params = new HashMap();
+ params.put("name","test");
+ params.put("password","1234");
+
+
+ View view = Struts.runAction(actionName,params);
+
+ Assert.assertEquals("/jsp/homepage.jsp", view.getJsp());
+ Assert.assertEquals("login successful", view.getParameters().get("message"));
+ }
+
+ @Test
+ public void testLoginActionFailed() {
+ String actionName = "login";
+ Map params = new HashMap();
+ params.put("name","test");
+ params.put("password","123456"); //密码和预设的不一致
+
+ View view = Struts.runAction(actionName,params);
+
+ Assert.assertEquals("/jsp/showLogin.jsp", view.getJsp());
+ Assert.assertEquals("login failed,please check your user/pwd", view.getParameters().get("message"));
+ }
+}
diff --git a/group11/542194147/myDataStructure/src/com/coderising/litestruts/View.java b/group11/542194147/myDataStructure/src/com/coderising/litestruts/View.java
new file mode 100644
index 0000000000..610ce0d092
--- /dev/null
+++ b/group11/542194147/myDataStructure/src/com/coderising/litestruts/View.java
@@ -0,0 +1,24 @@
+package com.coderising.litestruts;
+
+import java.util.Map;
+
+public class View {
+
+ private String jsp;
+ private Map parameters;
+
+ public String getJsp() {
+ return jsp;
+ }
+ public View setJsp(String jsp) {
+ this.jsp = jsp;
+ return this;
+ }
+ public Map getParameters() {
+ return parameters;
+ }
+ public View setParameters(Map parameters) {
+ this.parameters = parameters;
+ return this;
+ }
+}
diff --git a/group11/542194147/myDataStructure/src/com/coderising/litestruts/struts.xml b/group11/542194147/myDataStructure/src/com/coderising/litestruts/struts.xml
new file mode 100644
index 0000000000..e5d9aebba8
--- /dev/null
+++ b/group11/542194147/myDataStructure/src/com/coderising/litestruts/struts.xml
@@ -0,0 +1,11 @@
+
+
+
+ /jsp/homepage.jsp
+ /jsp/showLogin.jsp
+
+
+ /jsp/welcome.jsp
+ /jsp/error.jsp
+
+
\ No newline at end of file
diff --git a/group11/542194147/myDataStructure/src/com/coding/basic/MyArrayList.java b/group11/542194147/myDataStructure/src/com/coding/basic/MyArrayList.java
new file mode 100644
index 0000000000..fbede89fa1
--- /dev/null
+++ b/group11/542194147/myDataStructure/src/com/coding/basic/MyArrayList.java
@@ -0,0 +1,133 @@
+package com.coding.basic;
+
+import java.util.Iterator;
+
+public class MyArrayList implements MyList {
+
+ /**
+ * 数组默认大小
+ */
+ private static final int DEFAULT_SIZE = 10;
+ /**
+ * 储存元素的数组
+ */
+ private Object[] elementData =null;
+ /**
+ * 数组大小指针;
+ */
+ private int capacity;
+ /**
+ * 当前游标
+ */
+ private int current;
+
+ public MyArrayList(int size){
+ if(size<0){
+ throw new RuntimeException("大小不能小于0");
+ }else{
+ this.elementData= new Object[size];
+ this.current=0;
+ this.capacity=size;
+ }
+ }
+
+ public MyArrayList(){
+ this(DEFAULT_SIZE);
+ }
+
+ @Override
+ public void add(Object o) {
+ isOverSize();//判断数组容量是否满足,不满足增加空间
+ this.elementData[current]=o;
+ this.current++;
+ }
+
+ @Override
+ public void add(int index, Object o) {
+ isOverSize();//判断数组容量是否满足,不满足增加空间
+ isOutOfBoundIndex(index);//判断数组下标是否越界
+ System.arraycopy(elementData, index, elementData, index+1, this.elementData.length-index);
+ this.current++;
+ }
+
+ @Override
+ public Object get(int index) {
+ isOutOfBoundIndex(index);//判断数组下标是否越界
+ return this.elementData[index];
+ }
+
+ @Override
+ public Object remove(int index) {
+ isOutOfBoundIndex(index);//判断数组下标是否越界
+ Object o=this.elementData[index];
+ if(this.elementData.length>index+1){
+ System.arraycopy(elementData, index+1, elementData, index,this.elementData.length-index-1);
+ }
+ this.elementData[this.elementData.length-1]=null;
+ return o;
+ }
+
+ public Iterator> iterator(){
+ return new MyArrayListIterator();
+ }
+
+ @Override
+ public int size() {
+ return this.elementData.length;
+ }
+
+ /**
+ * 判断数组容量是否满足,不满足增加空间
+ */
+ private void isOverSize() {
+ if(this.current==this.capacity){
+ this.capacity+=MyArrayList.DEFAULT_SIZE;
+ }
+ Object[]newElementData=new Object[this.capacity];
+ for(int i=0;ithis.capacity||index<0){
+ throw new RuntimeException("数组下标越界");
+ }
+ }
+
+ /**
+ * MyArrayList的迭代器
+ * @author 小摩托
+ *
+ */
+ private class MyArrayListIterator implements Iterator