java.util.List学习

 接口List
其上级接口 Collection
已知实现类:ArrayList,LinkedList,Stack,Vector,AbstractList,AbstractSequentialList,  CopyOnWriteArrayList
public interface List extends Collection
有序的Collection。此接口的用户可以对列表中的每个元素的插入位置进行精确的控制。用户可以根据元素的整数索引访问元素,并搜索列表中的元素。
列表(像 Java 数组一样)是基于 0 的。
List接口提供了特殊的迭代器,ListIterator,除了允许Iterator接口提供的正常操作外,该迭代器还允许元素插入和替换,以及双向访问。还提供了一个方法来获取从列表中指定位置开始的列表迭代器。
允许插入重复的元素,与set不同。允许插入null。
boolean  add(Object o) 向列表的尾部追加指定的元素。
void   add(int index,Object o) 在列表的指定位置插入指定元素。
boolean addAll(Collection c) 追加指定collection中的所有元素到此列表的尾部,顺序      是指定collection的迭代器返回这些元素的顺序。
boolean addAll(int index,Collection c) 将指定collection中的所有元素添加到列表的       指定位置中。
void clear()  从列表中移除所有的元素。
boolean contains(Object) 如果列表包含指定的元素.
boolean contains(Collection c) 如果列表包含指定collection的所有元素,则返回true
boolean equals(Object o) 比较指定的对象与列表是否相等.
Object  get(int index) 返回列表中指定位置的元素.
int hashCode()  返回列表的哈希码.
int indexOf(Object o) 返回列表中首次出现指定元素的位置,如果无此元素,则返回-1
int lastIndexOf(Object o) 返回列表中最后一次出现指定元素的位置,如无,则返回-1
boolean isEmpty()  如果列表不包含元素,则返回true
Iterator iterator() 返回以正确顺序在列表的元素上进行迭代的迭代器。
ListIterator listIterator() 返回列表中元素的列表迭代器(以正确顺序).
ListIterator listIterator(int index) 返回列表中元素的列表迭代器(以正确顺序),从列表       的指定位置开始.
boolean remove(Object o) 移除列表中首次出现的指定元素.
Object remove(int index) 移除列表中指定位置的元素(可选操作)。将所有的后续元素向     左移动(将其索引减 1)。返回从列表中移除的元素。返回的是     以前在指定位置的元素.
boolean removeAll(Collection c) 从列表中移除指定collection包含的所有元素.
boolean retainAll(Collection c) 仅在列表中保留指定collection所包含的元素.
Object  set(int index,Object element) 用指定元素替换列表中指定位置的元素.返回的是        以前在指定位置的元素.
int size() 返回列表中的元素数.
List subList(int fromindex,int toindex) 返回列表中指定的fromindex(包含)和toindex          (不包含)之间的部分视图.
Object[]  toArray() 返回以正确顺序包含列表中的所有元素的数组.
T[]      toArray(T[] a)   返回以正确顺序包含列表中所有元素的数组;返回数组的运行       时类型是指定数组的运行时类型.
ex:
  List a = new ArrayList();
  for(int i=0;i<10;i++){
   a.add(""+i);
  }
//@1@  a.subList(2,6).clear();
//  Iterator it = a.iterator();
//  while(it.hasNext()){
//   System.out.println(it.next());
//@1@  }
@2@  List b = a.subList(2,6);
  b.clear();
  Iterator it = a.iterator();
  while(it.hasNext()){
   System.out.println("a"+it.next());
  }
  Iterator itb = b.iterator();
  while(itb.hasNext()){
   System.out.println("b"+itb.next());
@2@  }
输出:
a1
a6
a7
a8
a9
屏蔽掉@2@之间的部分,打开@1@部分,输出结果一致.a.subList(findex,tindex)获取到的list还是指向原list.


ex2:
  hashCode = 1;
  Iterator i = list.iterator();
  while (i.hasNext()) {
      Object obj = i.next();
      hashCode = 31*hashCode + (obj==null ? 0 : obj.hashCode());
  }
 这确保了 list1.equals(list2) 意味着对于任何两个列表 list1 和 list2 而言,可实现 list1.hashCode()==list2.hashCode(),正如 Object.hashCode 的常规协定所要求的。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值