list 接口的详解?

list 接口的详解?,第1张

List 接口继承了 Collection 接口以定义一个允许重复项的有序集合。该接口不但能够对列表的一部分进行处理,还添加了面向位置的 *** 作。

(1) 面向位置的 *** 作包括插入某个元素或 Collection 的功能,还包括获取、除去或更改元素的功能。在 List 中搜索元素可以从列表的头部或尾部开始,如果找到元素,还将报告元素所在的位置 :
void add(int index, Object element): 在指定位置index上添加元素element
boolean addAll(int index, Collection c): 将集合c的所有元素添加到指定位置index
Object get(int index): 返回List中指定位置的元素
int indexOf(Object o): 返回第一个出现元素o的位置,否则返回-1
int lastIndexOf(Object o) :返回最后一个出现元素o的位置,否则返回-1
Object remove(int index) :删除指定位置上的元素
Object set(int index, Object element) :用元素element取代位置index上的元素,并且返回旧的元素
(2) List 接口不但以位置序列迭代的遍历整个列表,还能处理集合的子集:
 ListIterator listIterator() : 返回一个列表迭代器,用来访问列表中的元素
 ListIterator listIterator(int index) : 返回一个列表迭代器,用来从指定位置index开始访问列表中的元素
List subList(int fromIndex, int toIndex) :返回从指定位置fromIndex(包含)到toIndex(不包含)范围中各个元素的列表视图
“对子列表的更改(如 add()、remove() 和 set() 调用)对底层 List 也有影响。”
21ListIterator接口
ListIterator 接口继承 Iterator 接口以支持添加或更改底层集合中的元素,还支持双向访问。ListIterator没有当前位置,光标位于调用previous和next方法返回的值之间。一个长度为n的列表,有n+1个有效索引值:

(1) void add(Object o): 将对象o添加到当前位置的前面
 void set(Object o): 用对象o替代next或previous方法访问的上一个元素。如果上次调用后列表结构被修改了,那么将抛出IllegalStateException异常。
(2) boolean hasPrevious(): 判断向后迭代时是否有元素可访问
 Object previous():返回上一个对象
 int nextIndex(): 返回下次调用next方法时将返回的元素的索引
 int previousIndex(): 返回下次调用previous方法时将返回的元素的索引
“正常情况下,不用ListIterator改变某次遍历集合元素的方向 — 向前或者向后。虽然在技术上可以实现,但previous() 后立刻调用next(),返回的是同一个元素。把调用 next()和previous()的顺序颠倒一下,结果相同。”
“我们还需要稍微再解释一下 add() *** 作。添加一个元素会导致新元素立刻被添加到隐式光标的前面。因此,添加元素后调用 previous() 会返回新元素,而调用 next() 则不起作用,返回添加 *** 作之前的下一个元素。”
22AbstractList和AbstractSequentialList抽象类
有两个抽象的 List 实现类:AbstractList 和 AbstractSequentialList。像 AbstractSet 类一样,它们覆盖了 equals() 和 hashCode() 方法以确保两个相等的集合返回相同的哈希码。若两个列表大小相等且包含顺序相同的相同元素,则这两个列表相等。这里的 hashCode() 实现在 List 接口定义中指定,而在这里实现。
除了equals()和hashCode(),AbstractList和AbstractSequentialList实现了其余 List 方法的一部分。因为数据的随机访问和顺序访问是分别实现的,使得具体列表实现的创建更为容易。需要定义的一套方法取决于您希望支持的行为。您永远不必亲自提供的是 iterator方法的实现。
23 LinkedList类和ArrayList类
在“集合框架”中有两种常规的 List 实现:ArrayList 和 LinkedList。使用两种 List 实现的哪一种取决于您特定的需要。如果要支持随机访问,而不必在除尾部的任何位置插入或除去元素,那么,ArrayList 提供了可选的集合。但如果,您要频繁的从列表的中间位置添加和除去元素,而只要顺序的访问列表元素,那么,LinkedList 实现更好。
“ArrayList 和 LinkedList 都实现 Cloneable 接口,都提供了两个构造函数,一个无参的,一个接受另一个Collection”
231 LinkedList类
LinkedList类添加了一些处理列表两端元素的方法。

 (1) void addFirst(Object o): 将对象o添加到列表的开头
void addLast(Object o):将对象o添加到列表的结尾
(2) Object getFirst(): 返回列表开头的元素
Object getLast(): 返回列表结尾的元素
(3) Object removeFirst(): 删除并且返回列表开头的元素
Object removeLast():删除并且返回列表结尾的元素
(4) LinkedList(): 构建一个空的链接列表
LinkedList(Collection c): 构建一个链接列表,并且添加集合c的所有元素
“使用这些新方法,您就可以轻松的把 LinkedList 当作一个堆栈、队列或其它面向端点的数据结构。”
232 ArrayList类
ArrayList类封装了一个动态再分配的Object[]数组。每个ArrayList对象有一个capacity。这个capacity表示存储列表中元素的数组的容量。当元素添加到ArrayList时,它的capacity在常量时间内自动增加。
在向一个ArrayList对象添加大量元素的程序中,可使用ensureCapacity方法增加capacity。这可以减少增加重分配的数量。
(1) void ensureCapacity(int minCapacity): 将ArrayList对象容量增加minCapacity
(2) void trimToSize(): 整理ArrayList对象容量为列表当前大小。程序可使用这个 *** 作减少ArrayList对象存储空间。
2321 RandomAccess接口
一个特征接口。该接口没有任何方法,不过你可以使用该接口来测试某个集合是否支持有效的随机访问。ArrayList和Vector类用于实现该接口。

本篇文章是对在JS中Map和List的简单实现代码进行了详细的分析介绍 需要的朋友参考下   复制代码 代码如下: /   MAP对象 实现MAP功能     接口   size()     获取MAP元素个数   isEmpty()    判断MAP是否为空   clear()     删除MAP所有元素   put(key value)   向MAP中增加元素(key value)   remove(key)    删除指定KEY的元素 成功返回True 失败返回False   get(key)    获取指定KEY的元素值VALUE 失败返回NULL   element(index)   获取指定索引的元素(使用element key element value获取KEY和VALUE) 失败返回NULL   containsKey(key)  判断MAP中是否含有指定KEY的元素   containsValue(value) 判断MAP中是否含有指定VALUE的元素   values()    获取MAP中所有VALUE的数组(ARRAY)   keys()     获取MAP中所有KEY的数组(ARRAY)     例子   var map = new Map();     map put("key" "value");   var val = map get("key")   ……    / function Map() {     this elements = new Array();     //获取MAP元素个数     this size = function() {         return this elements length;     };     //判断MAP是否为空     this isEmpty = function() {         return (this elements length < );     };     //删除MAP所有元素     this clear = function() {         this elements = new Array();     };     //向MAP中增加元素(key value)     this put = function(_key _value) {         this elements push( {             key : _key             value : _value         });     };     //删除指定KEY的元素 成功返回True 失败返回False     this remove = function(_key) {         var bln = false;         try {             for (i = ; i < this elements length; i++) {                 if (this elements[i] key == _key) {                     this elements splice(i );                     return true;                 }             }         } catch (e) {             bln = false;         }         return bln;     };     //获取指定KEY的元素值VALUE 失败返回NULL     this get = function(_key) {         try {             for (i = ; i < this elements length; i++) {                 if (this elements[i] key == _key) {                     return this elements[i] value;                 }             }         } catch (e) {             return null;         }     };     //获取指定索引的元素(使用element key element value获取KEY和VALUE) 失败返回NULL     this element = function(_index) {         if (_index < || _index >= this elements length) {             return null;         }         return this elements[_index];     };     //判断MAP中是否含有指定KEY的元素     this containsKey = function(_key) {         var bln = false;         try {             for (i = ; i < this elements length; i++) {                 if (this elements[i] key == _key) {                     bln = true;                 }             }         } catch (e) {             bln = false;         }         return bln;     };     //判断MAP中是否含有指定VALUE的元素     this containsValue = function(_value) {         var bln = false;         try {             for (i = ; i < this elements length; i++) {                 if (this elements[i] value == _value) {                     bln = true;                 }             }         } catch (e) {             bln = false;         }         return bln;     };     //获取MAP中所有VALUE的数组(ARRAY)     this values = function() {         var arr = new Array();         for (i = ; i < this elements length; i++) {             arr push(this elements[i] value);         }         return arr;     };     //获取MAP中所有KEY的数组(ARRAY)     this keys = function() {         var arr = new Array();         for (i = ; i < this elements length; i++) {             arr push(this elements[i] key);         }         return arr;     }; } 复制代码 代码如下: /   js实现list    / function List() {     this value = [];     / 添加 /     this add = function(obj) {         return this value push(obj);     };     / 大小 /     this size = function() {         return this value length;     };     / 返回指定索引的值 /     this get = function(index) {         return this value[index];     };     / 删除指定索引的值 /     this remove = function(index) {         this value splice(index );         return this value;     };     / 删除全部值 /     this removeAll = function() {         return this value = [];     };     / 是否包含某个对象 /     this constains = function(obj) {         for ( var i in this value) {             if (obj == this value[i]) {                 return true;             } else {                 continue;             }         }         return false;     };     / 是否包含某个对象 /     this getAll = function() {         var allInfos = ;         for ( var i in this value) {             if(i != (value length )){                 allInfos += this value[i]+" ";             }else{                 allInfos += this value[i];             }         }         alert(allInfos);         return allInfos += this value[i]+" ";;     }; } lishixinzhi/Article/program/Java/JSP/201311/20400

按照你的要求编写的程序如下

let list = [

["预付款项", "支付现金", "长期借款"],

[755340403, 17085162670, 3536364338],

[1204418576, 8658473101, 3444301912],

]

let header = ['公司', '2020-12-31', '2021-06-30']

let TableData =[]

for(let i=0;i<listlength;i++){

let temp={}

for(let j=0;j<list[i]length;j++){

temp[header[j]]=list[j][i]

}

TableDatapush(temp)

}

documentwrite(JSONstringify(TableData))

1List list = new ArrayList。

2listadd(测试1)。

3listadd(测试2)。

4listadd(测试3)。

5JSONArray jsonArray JSONArrayfromObject(list)。

6Systemoutprintln(jsonArraytoString。

7这边要导包需要jsonlibjarnetsfjsonJSONArray。

用java初始化一个list,向list中添加值,并输出list中的值:

1import javautil

2public class

3 public static void main(String arg[])

4 List lis = new Arraylist

5 lisadd("wo")

6 lisadd("shi")

7 lisadd("wang")

8for(int i=0;i<lissize(); i++)

9 Systemoutprint(lisget(i)+"")

$post('/wjdc/admin/wxWjTm/chooseTmdo', {
    wjId: wjId
}, function(res) {
    // [{'id':'1','sxTm':'性别'},{'id':'2','sxTm':'省份'}]
    var sel = $("select");
    for (var i = 0; i < reslength; i++) {
        selappend("<option value=" + res[i]id + ">" + res[i]sxTm + "</option>");
    }
});


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13402117.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-29
下一篇 2023-07-29

发表评论

登录后才能评论

评论列表(0条)

保存