数据结构

数据结构:
1.概念:
数据结构分类:
线性数据结果:
数组,文件,线性表,栈…
非线性数据结构:
散列表…
2.java中数据结构的架构:
Collection接口:
–List
–ArrayList
–LinkedList
–Vector
–Set
–HashMap
–TreeMao
–HashTable
3.java数据结构相关的类和接口:
List接口:
实现类:ArrayList
LinkedList
Vector
对List接口进行实例化:
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 toIndtx);截取子集合
特点:
1.有序集合
2.元素是可以重复的
Arrays数组工具类:
主要用于处理数组的工具类。
常用方法:
List asList(int[] nums);
作用:把数组转换成list集合
sort(int[] nums)
作用:把数组转换成字符串
int binarySearch(int[] nums,int i);
作用:二分法查找指定的元素所在的索引位置
注:要把数组先排序,在调用二分法查找
int[] copyOfRange(int[] nums,int from,int to);
作用:复制指定长度的数组
ArrayList类:
List接口的实现类:
构造函数:
ArrayList() 无参数构造函数
ArrayList(Collection c)带参的构造函数
常用方法:
1.add(Object o)添加元素
2.add(int index,Object obj);把元素添加到指定位置
3.addAll(Collection c);把另外一个集合中的所有元素都添加到指定集合中
4.remove(Object o);移除指定的对象
5.remove(int inde);移除指定索引的元素
6.remove(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接口:
实现类:
ArrayList
LinkedList
Vector
面试题:实现类的区别:
ArrayList:非线程安全的,查询速度快,添加和删除速度慢
LinkedList:双向链表结构,非线程安全的,增删处理速度快
Vector:线程安全的,处理速度慢
Set集合:
1.不能存放重复的元素
2.元素的存放是无序的
实现类:
(面试题)Hashset和TreeSet的区别:
HashSet:1.非线程安全,处理速度快
2.通过equals方法和hashcode值判断对象是否重复,确保元素的唯一性。
TreeSet:1.线程不安全,可以对Set集合中的元素进行排序
2.通过compareTo活着compare方法方法来保证元素的唯一性
3.元素是以二叉树的形式存放的

Map接口:
Map是以键值对的形式来保存数据的集合类型。
键:要确保唯一性,有自己内部的排序机制
Map集合可以直接添加元素,但是不能直接获取元素,需要咸转换成set集合,然后再通过迭代器遍历获取元素
实现类:
HashMap类:
构造方法:
HashMap();无参构造,默认值大小是16,但是需要时可以无限扩容。
常用方法:
int size();获取元素个数
boolean isEmpty();判断当前map集合是否为空
put(String str,Object obj);添加元素
get(String key);通过key获取value值
remove(String key);通过key值移除value对象值
containKey(String key);判断map集合中是否包含指定key值
containsValue(Object value);判断map集合中是否包含指定的value值
putAll(Map map);把一个集合添加到另一个map集合中
Set keyset();获取map中的所有key值
Collection values();获取map中所有的value值
Set<Map.Entry<String key,Object value>> entrySet();获取集合中所有的key-value键值对
Stack:栈
特殊线性表,遵循后进先出的原则
构造方法
stack();创建一个空堆栈
普通方法:
boolean empty() 判断当前栈是否为空
Object push();将元素推送到栈的顶部
Object peek();查看该栈的顶部的元素对象
Object pop();查看栈中顶部元素对象,并且从栈中删除该元素
search(Object obj)返回指定元素的位置,从1开始
Iterator迭代器接口:
作用:为集合服务,主要用于遍历集合中数据元素。
Inerator接口的实例化:
通过集合接口的iterator()方法赋值进行实例化。

  1. List item

    Iterator it = list.iterator();
    Iterator it = set.iterator();

方法:

boolean hasNext();判断是否具有下一个元素
		Object next();获取的下一个元素
		while(it.hasNext()){
				Object obj = it.next();
		}

泛型:
参数化类型。
经常和集合连用,可以通过泛型来确定集合中存放的类型
泛型的语法格式:

public class className<T>{
							private T data;
				}			
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值