美文网首页
Java Collections 集合类

Java Collections 集合类

作者: Sinexs | 来源:发表于2016-02-16 14:19 被阅读0次

List

  • ArrayList
  • 随机存取效率高(get & set)
  • 插入和删除较慢(除末尾)
  • LinkedList
  • 最优顺序存取
  • 插入和删除较快
  • 随机存取较慢
  • larger feature set?更多的属性?

ArrayList

Method

构造方法

共三种

  • 默认构造方法, 大小指定为10

public ArrayList() {
this(10);
}

 - 指定大小构造方法

public ArrayList(int initialCapacity) {
super();
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity);
this.elementData = (E[])new Object[initialCapacity];
}


- 指定集合内容的构造方法

public ArrayList(Collection<? extends E> c) {
elementData = c.toArray();
size = elementData.length;
// c.toArray might (incorrectly) not return Object[] (see 6260652)
if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, size, Object[].class);
}



######常用方法
 - ```contains(Object o)``` 判断是否包含某元素,使用equals对比
  ``` java
    boolean isContain = list.contains(object);
  • remove(Object o) 删除指定对象,参数为对象的引用
  list.remove(reference);
  • indexOf(Object o) 获取指定对象的位置,参数为对象的引用
  // 返回-1代表未发现元素
  int index = list.indexOf(reference);
  • subList(int from, int to) 获取子集
     list.subList(3, 9);
    
这里要注意,操作子集,会对原List进行影响。
如要对子集进行add/remove等操作,可以这样:
``` java
  List<Integer> sub = new ArrayList<Integer>(list.subList(3, 9));
  • containsAll(Collection<?> c) 判断列表中是否包含指定collection的所有元素
    list.containsAll(sub);
  • removeAll(Collection<?> c) 批量删除指定的元素
   list.removeAll(sub);
  • set(int index, E element) 替换index位置的元素,并返回之前的元素
list.set(9, e);
  • toArray(), toArray(T[] t) List转化为数组,一般用第二个
String[] array = new String[list.size()];
list.toArray(array);

扩容

扩容后的大小为原大小的1.5倍加1:

int newCapacity = (oldCapacity * 3)/2 + 1;

To Be Continue...

相关文章

网友评论

      本文标题:Java Collections 集合类

      本文链接:https://www.haomeiwen.com/subject/jqvpkttx.html