众所周之,js是没有ArrayList类的,但是js自带了Array类(虽然在js中已经是动态数组了),不过Array类使用起来还是挺别扭的,尤其是一些方法名称,更是让人摸不着头脑,于是就有了自己封装一个ArrayList类的想法。
(function(win) { var ArrayList = function() { this.datas = []; }; var proto = ArrayList.prototype; proto.size = function() { return this.datas.length; }; proto.isEmpty = function() { return this.size() === 0; }; proto.contains = function(value) { return this.datas.indexOf(value) !== -1; }; proto.indexOf = function(value) { for ( var index in this.datas) { if (this.datas[index] === value) { return index; } } return -1; }; proto.lastIndexOf = function(value) { for ( var index = this.size(); index >= 0; index--) { if (this.datas[index] === value) { return index; } } }; proto.toArray = function() { return this.datas; }; proto.outOfBound = function(index) { return index < 0 || index > (this.size() - 1); }; proto.get = function(index) { if (this.outOfBound(index)) { return null; } return this.datas[index]; }; proto.set = function(index, value) { this.datas[index] = value; }; proto.add = function(value) { this.datas.push(value); }; proto.insert = function(index, value) { if (this.outOfBound(index)) { return; } this.datas.splice(index, 0, value); }; proto.remove = function(index) { if (this.outOfBound(index)) { return false; } this.datas.splice(index, 1); return true; }; proto.removeValue = function(value) { if (this.contains(value)) { this.remove(this.indexOf(value)); return true; } return false; }; proto.clear = function() { this.datas.splice(0, this.size()); }; proto.addAll = function(list) { if (!list instanceof ArrayList) { return false; } for ( var index in list.datas) { this.add(list.get(index)); } return true; }; proto.insertAll = function(index, list) { if (this.outOfBound(index)) { return false; } if (!list instanceof ArrayList) { return false; } var pos = index; for(var index in list.datas) { this.insert(pos++, list.get(index)); } return true; }; function numberorder(a, b) { return a - b; } proto.sort = function(isNumber){ if(isNumber){ this.datas.sort(numberorder); return; } this.datas.sort(); }; proto.toString = function(){ return "[" + this.datas.join() + "]"; }; proto.valueOf = function(){ return this.toString(); }; win.ArrayList = ArrayList; })(window);
我们写一个页面测试一下。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="ArrayList.js"></script> <script type="text/javascript"> window.print = function(value) { document.write(value); }; window.println = function(value) { print(value); document.write("<br/>"); }; window.onload = function() { var list = new ArrayList(); list.add("jack"); list.add(43); list.add(true); println(list.get(0)); println(list.get(1)); println(list.get(2)); println(list.get(3)); println("----------------------"); println(list.size()); list.remove(2); println(list); println("----------------------"); println(list.isEmpty()); list.clear(); println(list.isEmpty()); println("----------------------"); list.add("jack"); list.add(43); list.add(true); var list2 = new ArrayList(); list2.addAll(list); println(list2); println("----------------------"); list2.insert(1,"male"); println(list2); println("----------------------"); list2.removeValue(true); println(list2); println("----------------------"); list2.insertAll(2,list); println(list2); println("----------------------"); println(list2.contains("jack")); println("----------------------"); list2.clear(); list2.add(1111); list2.add(222); list2.add(33); list2.add(4); list2.sort();//按字母顺序排 println(list2); println("----------------------"); list2.sort(true);//按数字顺序排 println(list2); println("----------------------"); } </script> </head> <body> </body> </html>
输出结果如下:
jack
43
true
null
----------------------
3
[jack,43]
----------------------
false
true
----------------------
[jack,43,true]
----------------------
[jack,male,43,true]
----------------------
[jack,male,43]
----------------------
[jack,male,jack,43,true,43]
----------------------
true
----------------------
[1111,222,33,4]
----------------------
[4,33,222,1111]
----------------------
相关推荐
在Android开发中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,因其轻量级、易读易写的特点,被广泛应用于服务器与客户端之间的数据传输。对于Android开发者来说,理解和熟练掌握JSON解析至关重要...
- 方法内部实现查询逻辑,例如从数据库中获取数据,并将结果封装成ArrayList返回。 3. **前端JavaScript调用:** - 在HTML页面中,定义一个JavaScript函数来调用DWR提供的方法,例如`getList()`。 - 该函数首先...
然而,这里提到的"ArrayList类(增强版)"并不是标准Java集合库中的ArrayList,而是JavaScript中对ArrayList的一种扩展实现。这个增强版的ArrayList通过添加了一些额外的方法,使其具有更多的功能,比如`each`、`...
IsSynchronized 属性指示当前的 ArrayList 实例是否支持线程同步,而 ArrayList.Synchronized 静态方法则会返回一个 ArrayList 的线程同步的封装。 3. Count 属性和 Capacity 属性 Count 属性是目前 ArrayList 包含...
- 首先,我们需要创建一个工具类`ListToJSONArray`,该类包含三个静态方法,分别用于将`ArrayList<Resources>`,`ArrayList<Types>`和`ArrayList<Messages>`对象封装为`JSONArray`。 - 每个方法都遵循相似的模式:...
总的来说,TreeUtil工具类是Java开发中处理树形数据结构的强大助手,通过封装常见的树操作,简化了开发流程,提高了代码的可读性和复用性。掌握并合理运用这类工具,对于提升开发效率至关重要。
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web服务和应用程序之间的数据传输,因为它易于阅读和编写,同时也易于机器解析和生成。在Java中,处理JSON对象通常需要依赖特定的库,本...
一,function 从一开始接触到js就感觉好灵活,每个人的写法都不一样,比如一个function就有N种写法 如:function showMsg(){},var showMsg=function(){},showMsg=function(){} 似乎没有什么区别,都是一样的嘛,真...
4. **数组与集合框架**:理解一维和多维数组的概念,以及ArrayList、LinkedList、HashSet、HashMap等集合类的使用,了解它们的特点和适用场景。 5. **IO流**:学习文件操作,包括输入输出流的分类,缓冲流的使用,...
本工具类提供了一种非JavaScript的纯Java实现,适用于Android初学者快速集成到项目中。通过这个工具类,开发者可以轻松地实现省市区三级联动选择功能,提升用户体验。 首先,我们需要创建一个`ProvinceCityPicker`...
- getAll方法:这个方法通过执行SQL查询语句“select * from mind”来获取mind表中的所有数据,并将其封装成ArrayList类型返回。在执行查询之前,它会调用getConnection方法来获取数据库连接,并在查询执行完毕后...
Java的基础包括类、对象、封装、继承、多态等概念。此外,Java还涉及到异常处理、集合框架(如ArrayList、LinkedList、HashMap等)、IO流、多线程、网络编程以及Swing或JavaFX这样的GUI(图形用户界面)工具包。 ...
2. **类和对象**:面向对象编程的核心概念,包括类的定义、对象的创建、封装、继承和多态。 3. **集合框架**:List、Set、Queue和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类的使用。 4. **异常...
javascript帮助类 可以实现创建ArrayList,HashMap集合 各种表单验证方式都封装在里面咯 包括邮箱,时间,url,double,未定义,function,中文,英文,邮政编码 ,电话,移动电话,zip格式,是否空
2. **封装类**:Java中的基本数据类型有对应的封装类,例如`float`对应`java.lang.Float`,`char`对应`java.lang.Character`,`boolean`对应`java.lang.Boolean`。这些封装类使得基本数据类型可以和其他对象一样进行...
选择题部分通常用于测试学生对Java基础知识的理解,包括但不限于语法、类和对象、数据类型、运算符、流程控制语句(如if-else、switch-case)、数组、集合框架、面向对象概念(如继承、多态、封装)等。由于题目具体...
1. **基础语法**:类、对象、继承、多态、封装。 2. **集合框架**:ArrayList、LinkedList、HashMap、HashSet等的区别和使用场景。 3. **异常处理**:try-catch-finally语句块,异常的分类与自定义异常。 4. **多...
首先定义一个 VO (Value Object) 类,其中包含 `List<String>` 类型的属性。 **VO 定义示例**: ```java public class ParamVo { private List<String> areaList; public List<String> getAreaList() { return ...
项目描述 ...request是负责页面之间传递参数和数据的类,是java封装好的,你只要把它当成一个工具就可以了,就好比你用遥控器控制电视,你并不需要详细了解遥控器的工作原理。所以不用配置mysql。
- **基本数据类型与封装类**:了解Java中的原始数据类型(如`int`、`double`)及其对应的封装类(如`Integer`、`Double`),以及它们之间的区别。 #### 2. 类与对象的理解 - **面试题背景**:考查求职者对类和...