数据结构
1.概念
数据结构分类:
线性数据结构:
数组,文件,线性表,栈......
非线性数据结构:
散列表,树和图
2.java中数据结构的架构
Collection接口:
---List<E>
--------ArrayList
--------LinkedList
---Set<E>
---------HashSet
---------TreeSet
Map接口:
---HashMap
---TreeMap
---HashTable
3.java数据结构相关的类和接口
List 接口:
实现类:ArrayList
-------LinkedList
-------vector
对接口进行实例化:
List list = new ArrayList();
常用方法:
void add (Object obj);往集合中添加数据
Object get (int index);获取对象数据
int size();获取集合长度.元素个数
Object remove(int index);通过索引移除元素
Object remove (Object obj);通过对象移除元素
void clear();清除集合中的元素
int indexOf(Object obj);获取元素的索引位置
int lastIndexOf(Obj);获取指定元素最后一次出现的索引位置
List subList (int form ,int toIndex);截取子集合
特点:
1.有序集合
2.元素可以重复的
Array数组工具类:
主要用于处理数据的工具类:
常用方法:
List asList (int[] nums);
作用:把数组转化成list集合
sort(int[] nums)
作用: 把数组进行排序
String toString();
作用:把数组转换成字符串
int binarySearch(int[] nums,int i);
作用:二分法查找指定的元素所在的索引位置
注:要把数组先排序,在调用二分查找
int[] copyofRange(int[] nums ,int from,int to);
作用:复制指定长度的数组
ArrayList类:
List接口的实现类:
构造函数:
ArrayList()无参构造函数
ArrayList(Collection<E> c)带参的构造函数
常用方法:
1.add(Object O)添加元素
2.add(int index, Object obj);把元素添加到指定的位置
3.addAll(Collection c);把另外一个结合中的所有元素都添加到指定集合中
4.remove(Object o);移除指定的对象
5.remove(int inde);移除指定索引的元素
6.removeAll(Collection c)移除指定的集合中的元素
7.clear();清空集合中的元素
8.retainAll(Collection c);保留指定的集合中的元素
9.Object[] toArray();集合转换成数组
LinkedList类:
List接口的实现类;
双向链表结构
构造方法:
LinkedList();创建一个空列表
new LinkedList();
LinkedList(Collection<? extends E >C);带参结构
常用方法:
add(E e)添加指定的元素到集合
add(int idex ,E e);把元素添加到指定的位置
List 接口;
实现类:ArrayLsit
LinkedList
Vector
面试题----->实现类的区别:
ArrayList :非线性安全,增删处理速度快
LinkedList:双向链表结构,非线程安全的,查询速度快
Vector:线程安全的,处理速度慢
4.Set集合:
1.不能存放重复的元素
2.元素的存放是无序的
List接口和Set接口Map接口的区别(面试题)
实现类:
(面试题)Hashset 和TreeSet的区别:
HashSet:
1.非线程安全,处理速度飞非常快
2.通过equals方法和hashcode值判断对象是否重复,确保元素的唯一性
TreeSet:
1.线程不安全,可以对Set集合中的元素进行排序
2.通过conoareTo或者compare方法来保证元素饿唯一性
3.元素是以二叉树的形式存放的