当前位置: 首页 > news >正文

网站建设哪家好灵活苏州久远网络wordpress 调用中等图片

网站建设哪家好灵活苏州久远网络,wordpress 调用中等图片,做旅游宣传图的网站有哪些,专业模板建站公司1 泛型的引入 问题#xff1a;我们之前实现过的顺序表#xff0c;只能保存 int 类型的元素#xff0c;如果现在需要保存 指向 Person 类型对象的引用的顺序表#xff0c;请问应该如何解决#xff1f;如果又需要保存指向 Book 对象类型的引用呢#xff1f; 之前写的顺序表…1 泛型的引入 问题我们之前实现过的顺序表只能保存 int 类型的元素如果现在需要保存 指向 Person 类型对象的引用的顺序表请问应该如何解决如果又需要保存指向 Book 对象类型的引用呢 之前写的顺序表代码示例 import java.util.Arrays;public class MyArrayList {private int[] elem;private int usedSize;private static int capacity 10;public MyArrayList() {this.elem new int[capacity];}public boolean isFull() {if (this.usedSize capacity) {return true;}return false;}public void add(int pos, int data) {if (pos 0 || pos this.usedSize) {System.out.println(pos位置不合法);return;}if (isFull()) {this.elem Arrays.copyOf(this.elem, 2 * capacity);capacity * 2;}for (int i this.usedSize - 1; i pos; i--) {this.elem[i 1] this.elem[i];}this.elem[pos] data;this.usedSize;}public void display() {for (int i 0; i this.usedSize; i) {System.out.print(this.elem[i] );}System.out.println();}public boolean isEmpty() {if (this.usedSize 0) {return true;}return false;}public boolean contains(int toFind) {if (isEmpty()) {return false;}for (int i 0; i this.usedSize; i) {if (this.elem[i] toFind) {return true;}}return false;}public int search(int toFind) {if (isEmpty()) {return -1;}for (int i 0; i this.usedSize; i) {if (this.elem[i] toFind) {return i;}}return -1;}public int getPos(int pos) {if (isEmpty()) {throw new RuntimeException(顺序表为空);}if (pos 0 || pos this.usedSize) {throw new RuntimeException(pos不合法);}return this.elem[pos];}public int size() {return this.usedSize;}public void setPos(int pos, int value) {if (pos 0 || pos this.usedSize) {System.out.println(pos位置不合法);return;}this.elem[pos] value;}public void remove(int toRemove) {if (isEmpty()) {return;}int index search(toRemove);if (index -1) {System.out.println(没有你要删除的数字);}for (int i index; i this.usedSize - 1; i) {this.elem[i] this.elem[i 1];}this.usedSize--;}public void clear() {for (int i 0; i this.usedSize; i) {this.elem[i] 0;}this.usedSize 0;}public static void main(String[] args) {MyArrayList myArrayList new MyArrayList();myArrayList.add(0, 1);myArrayList.add(1, 2);myArrayList.add(2, 3);myArrayList.add(3, 4);System.out.println(myArrayList.size());myArrayList.display();System.out.println(myArrayList.contains(3));System.out.println(myArrayList.contains(2));System.out.println(myArrayList.search(5));System.out.println(myArrayList.search(2));System.out.println(myArrayList.getPos(0));System.out.println(myArrayList.usedSize);myArrayList.display();myArrayList.remove(1);myArrayList.remove(2);myArrayList.display();myArrayList.remove(4);myArrayList.display();myArrayList.clear();System.out.println();myArrayList.display();} } 首先我们在学习多态过程中已知一个前提父类的引用可以指向子类的对象。其次我们也已知 Object 是 java 中所有类的祖先类   那么要解决上述问题我们很自然的想到一个解决办法将我们的顺序表的元素类型定义成 Object 类型这样我们的 Object 类型的引用可以指向 Person 类型的对象或者指向 Book 类型的对象了。 因为代码改动较多现在指出主要代码 这样我们可以就可以很自由的存储指向任意类型对象的引用到我们的顺序表了。   改编后的代码  package test1;import java.util.Arrays;public class MyArrayList {private Object[] elem;private int usedSize;private static int capacity 10;public MyArrayList() {this.elem new Object[capacity];}public boolean isFull() {if (this.usedSize capacity) {return true;}return false;}public void add(int pos, Object data) {if (pos 0 || pos this.usedSize) {System.out.println(pos位置不合法);return;}if (isFull()) {this.elem Arrays.copyOf(this.elem, 2 * capacity);capacity * 2;}for (int i this.usedSize - 1; i pos; i--) {this.elem[i 1] this.elem[i];}this.elem[pos] data;this.usedSize;}public void display() {for (int i 0; i this.usedSize; i) {System.out.print(this.elem[i] );System.out.println();}System.out.println();}public boolean isEmpty() {if (this.usedSize 0) {return true;}return false;}public boolean contains(Object toFind) {if (isEmpty()) {return false;}for (int i 0; i this.usedSize; i) {if (this.elem[i] toFind) {return true;}}return false;}public int search(Object toFind) {if (isEmpty()) {return -1;}for (int i 0; i this.usedSize; i) {if (this.elem[i] toFind) {return i;}}return -1;}public Object getPos(int pos) {if (isEmpty()) {throw new RuntimeException(顺序表为空);}if (pos 0 || pos this.usedSize) {throw new RuntimeException(pos不合法);}return this.elem[pos];}public int size() {return this.usedSize;}public void setPos(int pos, int value) {if (pos 0 || pos this.usedSize) {System.out.println(pos位置不合法);return;}this.elem[pos] value;}public void remove(int toRemove) {if (isEmpty()) {return;}int index search(toRemove);if (index -1) {System.out.println(没有你要删除的数字);}for (int i index; i this.usedSize - 1; i) {this.elem[i] this.elem[i 1];}this.usedSize--;}public void clear() {for (int i 0; i this.usedSize; i) {this.elem[i] 0;}this.usedSize 0;}public static void main(String[] args) {MyArrayList books new MyArrayList();for (int i 0; i 10; i) {books.add(i,new Book(三国演义, 罗贯中, 15));}books.display(); // MyArrayList myArrayList new MyArrayList(); // myArrayList.add(0, 1); // myArrayList.add(1, 2); // myArrayList.add(2, 3); // myArrayList.add(3, 4); // System.out.println(myArrayList.size()); // myArrayList.display(); // System.out.println(myArrayList.contains(3)); // System.out.println(myArrayList.contains(2)); // System.out.println(myArrayList.search(5)); // System.out.println(myArrayList.search(2)); // System.out.println(myArrayList.getPos(0)); // System.out.println(myArrayList.usedSize); // myArrayList.display(); // myArrayList.remove(1); // myArrayList.remove(2); // myArrayList.display(); // myArrayList.remove(4); // myArrayList.display(); // myArrayList.clear(); // System.out.println(); // myArrayList.display();} } 遗留问题现在的 MyArrayList 虽然可以做到添加任意类型的引用到其中了但遇到以下代码就会产生问题。 写一个Person类 接下来我称之为牛马操作 编译竟然正确没有报红我们运行一下看看 运行时会抛出了异常   提示问题暴露的越早影响越小。编译期间的问题只会让开发者感觉到运行期间的错误会让所有的软件使用者承受错误风险。 所以我们需要一种机制可以 1. 增加编译期间的类型检查 2. 取消类型转换的使用 泛型就此诞生   2.泛型的分类 1. 泛型类2. 泛型方法 3 泛型类的定义的简单演示 注意 泛型类可以一次有多个类型变量用逗号分割。   4 泛型背后作用时期和背后的简单原理 1. 泛型是作用在编译期间的一种机制即运行期间没有泛型的概念。2. 泛型代码在运行期间就是我们上面提到的利用 Object 达到的效果这里不是很准确以后会做说明。   5 泛型类的使用 通过以上代码我们可以看到泛型类的一个使用方式只需要在所有类型后边跟尖括号并且尖括号内是真正的类型即 E 可以看作的最后的类型。   看具体代码 package test1;import java.util.Arrays;public class MyArrayListE {private Object[] elem;private int usedSize;private static int capacity 10;private E e;public MyArrayList() {this.elem new Object[capacity];this.e e;}public boolean isFull() {if (this.usedSize capacity) {return true;}return false;}public void add(int pos, E data) {if (pos 0 || pos this.usedSize) {System.out.println(pos位置不合法);return;}if (isFull()) {this.elem Arrays.copyOf(this.elem, 2 * capacity);capacity * 2;}for (int i this.usedSize - 1; i pos; i--) {this.elem[i 1] this.elem[i];}this.elem[pos] data;this.usedSize;}public void display() {for (int i 0; i this.usedSize; i) {System.out.print(this.elem[i] );System.out.println();}System.out.println();}public boolean isEmpty() {if (this.usedSize 0) {return true;}return false;}public boolean contains(E toFind) {if (isEmpty()) {return false;}for (int i 0; i this.usedSize; i) {if (this.elem[i] toFind) {return true;}}return false;}public int search(E toFind) {if (isEmpty()) {return -1;}for (int i 0; i this.usedSize; i) {if (this.elem[i] toFind) {return i;}}return -1;}public Object getPos(int pos) {if (isEmpty()) {throw new RuntimeException(顺序表为空);}if (pos 0 || pos this.usedSize) {throw new RuntimeException(pos不合法);}return this.elem[pos];}public int size() {return this.usedSize;}public void setPos(int pos, int value) {if (pos 0 || pos this.usedSize) {System.out.println(pos位置不合法);return;}this.elem[pos] value;}public void remove(E toRemove) {if (isEmpty()) {return;}int index search(toRemove);if (index -1) {System.out.println(没有你要删除的数字);}for (int i index; i this.usedSize - 1; i) {this.elem[i] this.elem[i 1];}this.usedSize--;}public void clear() {for (int i 0; i this.usedSize; i) {this.elem[i] 0;}this.usedSize 0;}public static void main(String[] args) {MyArrayListBook books new MyArrayListBook();books.add(0, new Book(红楼梦, 曹雪芹, 18));books.add(2, new Person(lisi, lll));// Book book1 new Book(红楼梦, 曹雪芹, 18); // for (int i 0; i 10; i) { // if (i 0) { // books.add(i, book1); // } else { // books.add(i, new Book(三国演义, 罗贯中, 15)); // } // } // books.display(); // Person person (Person) books.getPos(0); // MyArrayList myArrayList new MyArrayList(); // myArrayList.add(0, 1); // myArrayList.add(1, 2); // myArrayList.add(2, 3); // myArrayList.add(3, 4); // System.out.println(myArrayList.size()); // myArrayList.display(); // System.out.println(myArrayList.contains(3)); // System.out.println(myArrayList.contains(2)); // System.out.println(myArrayList.search(5)); // System.out.println(myArrayList.search(2)); // System.out.println(myArrayList.getPos(0)); // System.out.println(myArrayList.usedSize); // myArrayList.display(); // myArrayList.remove(1); // myArrayList.remove(2); // myArrayList.display(); // myArrayList.remove(4); // myArrayList.display(); // myArrayList.clear(); // System.out.println(); // myArrayList.display();} } 那么现在就会出现编译错误 这就是泛型的作用 注意 Book 只能想象成 E 的类型但实际上 E 的类型还是 Object。   6 泛型总结 1. 泛型是为了解决某些容器、算法等代码的通用性而引入并且能在编译期间做类型检查。2. 泛型利用的是 Object 是所有类的祖先类并且父类的引用可以指向子类对象的特定而工作。3. 泛型是一种编译期间的机制即 MyArrayListPerson 和 MyArrayListBook 在运行期间是一个类型。4. 泛型是 java 中的一种合法语法标志就是尖括号
http://www.w-s-a.com/news/208302/

相关文章:

  • 装修设计网站哪个平台最好免费自助建站工具
  • 网站建设规划结构网站服务费怎么做分录
  • 哪里有做网站的公司微商怎么开店步骤
  • 访问不了服务器的网站北京工业产品设计公司
  • 怎么棋牌网站建设口碑好的福州网站建设
  • 怎么样注册一个网站南通网站定制搭建
  • 网站免费正能量软件下载wordpress 多本小说
  • 临淄网站制作价格低长沙谷歌seo收费
  • 吴江公司网站建设电话免费的那种软件
  • 大淘客网站如何做seo网络广告设计公司
  • 厦门网络营销顾问湘潭网站seo
  • asp.net个人网站淮南 搭建一个企业展示网站
  • 备案关闭网站wordpress 替换
  • 台州建设网站制作wordpress乱码
  • 互联网时代 网站建设做交互设计的网站
  • 网站屏蔽中文浏览器湘潭做网站广告的公司
  • 好看的单页面网站模板免费下载手机网站经典案例
  • 优秀网站建设平台建筑模板工厂价格尺寸
  • 合肥微信网站建设旅游景区网站模板
  • 一个只做百合的网站wordpress文章和博客的区别
  • 编写网站策划方案网站哪里有
  • 网站做得好的公司国家防疫政策最新调整
  • 设计优秀的企业网站做行测的网站
  • 提供做网站公司有哪些关键词优化诊断
  • 建站合肥网络公司seo免费建手机商城网站吗
  • 设计师投资做项目网站外贸网站建设工作室
  • 无聊的网站wordpress的alt属性插件
  • 个股期权系统网站开发小清新wordpress模板
  • 全中文网站开发建筑公司企业愿景文案
  • 广州网站建设正规公司建设银行信用卡中心网站