容器Collection_Set_List_ArrayListJAVA099-102
来源:互联网 发布:复杂网络基本概念 编辑:程序博客网 时间:2024/05/16 08:07
来源:http://www.bjsxt.com/
1、S02E099_01容器Collection_Set_List接口介绍
Collection接口
——Set子接口
————HashSet
——List子接口
Map接口
——HashMap
(1)Collection常用方法:
int size()
boolean isEmpty()
boolean contains(Object o)是否包含某对象
Iterator iterator()迭代器,遍历容器
Object[] toArray()把容器内的对象放到object数组里
boolean add(E e)把对象放到容器中
boolean remove(Object o)从容器中移除
boolean containsAll(Collection)是否为子集(包含所有元素)
boolean addAll(Collection)加入所有对象
boolean removeAll(Collection)从容器中移除所有对象
boolean retainAll(Collection)取交集
void clear()移除所有对象
boolean equals(Object o)
int hashCode()
(2)Set常用方法:跟Collection一样(无序不可重复)
(3)List常用方法:除了Collection中的,还有:
(有序可重复,多了些跟索引有关的方法)
E get(int index)
E set(int index, E element)在相应的位置覆盖元素
void add(int index, E element)在相应位置放置元素,相应位置之后的元素往后排
E remove(int index)把相应位置的元素移除
int indexOf(Object o)、lastIndexOf(Object o)
2、S02E100_01容器List子类ArrayList、LinkedList、Vector用法详解
ArrayList:底层实现是数组,线程不安全,效率高。所以,查询快。修改、插入、删除慢。
LinkedList:底层实现是链表,线程不安全,效率高。所以,查询慢。修改、插入、删除快。
Vector:底层实现是数组。线程安全,效率低。
3、S02E101_01自己实现ArrayList——数组扩容、(add、get、remove、set)方法、equals问题
package com.test.arraylist;public class MyArrayList { private Object[] elementData; private int size; public MyArrayList(){ this(3);//初始容量 } public MyArrayList(int initialCapacity){//指定初始容量 if(initialCapacity < 0){ try { throw new Exception(); } catch (Exception e) { } } elementData = new Object[initialCapacity];//创建数组 } public int size(){ return elementData.length; } public boolean isEmpty(){ return size ==0; } public void add(Object obj){ ensureCapacity();//确保容量 elementData[size++] = obj; } public Object get(int index){ rangeCheck(index);//检查索引有没有超过范围 return elementData[index]; } public void remove(int index){ rangeCheck(index);//检查索引有没有超过范围 int numMoved = size - index - 1; if(numMoved > 0){ System.arraycopy(elementData, index + 1, elementData, index, numMoved);//数组的拷贝 } elementData[--size] = null; } private void rangeCheck(int index){//检查索引有没有超过范围 if(index >= size){ try { throw new Exception(); } catch (Exception e) { e.printStackTrace(); } } } public void remove(Object obj){ for (int i = 0; i < size; i++) { if(get(i).equals(obj)){//注意:底层调用的是equals方法而不是==,有些类对比的是值。 remove(i); } } } public Object set(int index,Object obj){ rangeCheck(index);//检查索引有没有超过范围 Object oldValue = elementData[index]; elementData[index] = obj; return oldValue; } public void add(int index,Object obj){ rangeCheck(index);//检查索引有没有超过范围 ensureCapacity();//确保容量 System.arraycopy(elementData, index, elementData, index + 1, size - index); elementData[index] = obj; size++; } private void ensureCapacity(){//确保容量 if(size == elementData.length){ Object[] newArrary = new Object[size * 2 + 1]; System.arraycopy(elementData, 0, newArrary, 0, elementData.length); elementData = newArrary; } } public static void main(String[] args) { MyArrayList list = new MyArrayList(); list.add(0); list.add(1); list.add(2); list.add(4); list.add(5); System.out.println(list.size()); }}
- 容器Collection_Set_List_ArrayListJAVA099-102
- 容器
- 容器
- 容器
- 容器
- 容器
- 容器
- 容器
- 容器
- 容器
- 容器
- 容器
- 容器
- 容器
- 容器
- 容器
- 容器
- 容器
- 数据结构实践项目——图的基本运算及遍历操作
- 面试问题
- 【Oracle】--"任性"Oracle安装之旅
- 【C#】流控制
- WebService
- 容器Collection_Set_List_ArrayListJAVA099-102
- 基础动画-(2)-属性动画
- Win7或Win8上安装VS2015报“安装包丢失或损坏”问题的解决办法
- Ubuntu 14.04安装Hadoop2.5.2(单机模式)
- 哈佛大学警示录
- 进位制换算
- hibernate的缓存机制
- Android根据布局文件动态添加控件
- Linux内存管理