集合

一.集合

Collection接口,定义了存放一组对象的方法。其子接口有两个

 

list

list中的数据对象有顺序而且可以重复。有索引

list的实现类有:

Arraylist

Arraylist的底层是object数组。查找快,增删慢。

因为是数组,查找的时候根据索引来查,所以查找很快。

增删慢是因为增加或者的时候涉及元素的移动。如果往最后一位添加就可以直接添加,但是往中间添加的时候,之 后的元素都要移动。添加索引越小的元素移动的越多。

Linkedlist

Linkedlist的底层是链表。查找慢,增删快。

链表中的数据类型是在内存中是松散的。

list的常用方法

add();//添加
set();//将某个元素设置为
get();获得
indexof();//获得某个元素的位置。
remove();移除

list的常用算法

sort();//排序
reverse();//逆序
binarysearch();//折半查找
shuffle();//随机排列

 

set

set中的数据对象没有顺序不可以重复,没有索引。

set集合的实现类

hashset

Treeset

Linkedhashset

set接口的常用方法

size();//长度
isEmpty();//是否为空
contains();//是否包含
Object[] toArray();//转换为数组
add();//添加
remove();//移除
containsAll();//是否包含所有
addAll();//添加所有
retainAll();//求交集
removeAll();//移除所有
clear();//清除

 

map

实现map接口的类用来存储键值对(key value)

map的实现类有:

treemap

treemap用红黑树来实现。

hashmap

haspmap用哈希表来实现。

map类中存储的键值对通过建来标识,所以键不能重复。(不能重复指的是相互equals()的时候不能重复。)

map接口的常用方法

put();//添加
get();//取值
remove();//移除
containKey();//是否包含键
containValue();//是否包含值
size();//长度
isEmpty();//是否为空
putAll();//添加所有
clear();//清除

 

collection接口的常用方法

add();//新增  
isEmpty();//是否为空;
contains();是否包含;
remove();删除
clear();清除  
size();长度
object[] toArray();转为数组
comparable接口

所有可以排序的类都实现了java.lang.comparale接口,comparable接口只有一个方法:

public int Comparable(Object obj){
//返回0时表示this=obj;
//返回正数时表示this>obj;
//返回负数时表示this<obj;
}
//实现了comparable接口的类通过实现comparaTo方法从而确定该类对象的排列方式。

如何选择数据结构

衡量标准是读的效率和改的效率。

 

二.迭代器Iterator

所有实现了Collection接口的容器类都有一个Iterator方法用以返回一个实现了Iterator接口的对象。

Iterator成为对象迭代器,用于子元素内的元素的遍历操作。

它定义了如下方法:

boolean  hasNext();//判断是否还有下一个元素

object next();

void remove();//移除
//注意,用迭代器遍历collection集合时,不能对集合进行增删操作。

 

 

三.增强For循环

增强for循环的底层就是迭代器。

for(数组数据类型/集合的泛型 变量名:要遍历的数组/结合 ){

}

 

 

四.泛型

泛型是未知的数据类型

定义含有泛型的类

public class 变量名<E>(){
//可以是成员变量的类型
//E 变量名;

//可以是成员方法的参数类型
  public E 方法名(E e){
   
  }
}

什么时候确定泛型的类型:创建对象的时候确定泛型的类型,

如果创建对象的时候,没有确定,那么默认泛型是Object类型

类名 对象名 = new 类名();

1. 定义和使用含有泛型的方法

 

单独的某一个方法中使用泛型:

修饰符 <E> 返回值 方法名(E e){

}

 

修饰符 static <E> 返回值 方法名(E e){

}

2. 定义和使用含有泛型的接口

 

public interface Inter<E>{}

 

使用方式一:

public class 类名 implements Inter<String>{

 

}

 

使用方式二:

public class 类名<E> implements Inter<E>{}

类名<String> 对象名 = new 类名<>();

 

 

 

3.泛型通配符

 

通配符:?

作为方法的参数: ArrayList<?> list 或者 ArrayList list

作为方法的返回值:ArrayList<?> list 或者 ArrayList list

 

上限限定泛型的写法: ? extends E //可以是E类型或者是E类型的子类类型

下限限定泛型的写法: ? super E //可以是E类型或者是E类型的父类类型

 

 

 

 

 

 

 

posted @ 2021-08-26 12:12  laity111  阅读(28)  评论(0编辑  收藏  举报