一。
Collection cil=new ArrayList(); // LIST 集合有序 数组 适合查询
Collection se=new hashSet(); // set 集合无序 链表 适合增删
List:
.add ()//添加元素
.isEmpty ()//检查是否为空集合
//clear() 清空集合
//remove()删除集合中的元素
Contains ()//判断当前集合是否包含给定的元素
conTainsAll //判断当前集合是否包含给定的集合中的所有元素
二。
Iterator 迭代器
/**
*
- 遍历集合
- Collection提供了统一的遍历集合元素的
- 方式:迭代器模式
- Iterator iterator()
- 获取用于遍历当前集合的迭代器
- java.util.Iterator()是一个接口,规定了用于遍历集元素的相关方法,不同的集合提供了相应的实现类。
- 无需记住那些实现类的命子,只将他们做Iterator即可。
- 遍历集合遵循:问 取 删的步骤,其中删除不是必要操作
- @author apple
/
迭代方式:
首先 对象.hasNext();//先问
然后 对象.next(); 后取
/*
* boolean hasNext()问的过程
* 该方法是判断集合中是否还有元素可以取出
*
* E next()取得过程
* 获取集合中下一个元素
*/
//在迭代器遍历集合元素的时,不要使用集的方法增删元素,否则会引起异常
新循环==迭代器
新循环并非信誉发,新循环是编译器认可,而不是虚拟机认可
使用新循环遍历集合时,编译器会将他改为迭代器方式遍历。所以在使用新循环遍历集合时
不能通过集合的方法增删元素。
For each(变量:数组或集合){ //对于数组和集合遍历更方便
}
泛型
泛型又称为参数化类型,是将当前类的属性的类型
方法参数的类型以及方法返回的定义权 移交给使用者。使用者在创建当前类的同时将泛型的实际类型传入。
SubList //截取字符串的位置
集合变数组
toArray(【集合】)
/**
* 若给定的数组可能(数组可以存放集合的所有元素)时
* 则使用该数组。若不可用,会自动创建一个与给定的数组同类型的数组
*
*/
/**
-
数组转换集合
-
需要注意,转换只能转换为List集合
-
需要注意,转换只能转换为List集合
-
使用的是数组的工具类Arrays的静态方法aslist
-
只能转换为List集合的主要原因是:set不能存放重复元素,所以若转换为SEt集合
-
可能丢失元素的情况
-
@author apple
-
向集合中添加一个元素
*- 实际上下面的代码会抛出异常(java.lang.UnsupportedOperationException)原因在于,该集合是由数组转换出来的
- ,那么该集合就表示原来的数组,所以对集合的操作就是对数组的操作。那么添加元素会导致原数组扩容,那么久不能
- 表示原来的数组
- 所以不允许向该集合添加元素
-
所以得集合都提供了一个常有的Collection类型的构造方法
* 该构造方法称为:复制构造器
* 作用是在创建当前集合的同时,集合中包含给定集合中的所有元素。
*
* -
排序集合元素
-
排序集合使用的是集合的工具类Collections的静态方法
-
排序技能对List集合进行。因为Set部分实现类是无序的
-
@author by:Wys
*/
Collection:集合的接口 Collections 集合的工具类
Collections.sort 集合的排序
查找表。文件操作
比较器:
/*重载sort方法要求传入一个额外的比较器该方法不在要求集合元素必须实现Comparable接口,并且也不再
* 使用集合元素自身的比较规则排序了,而是给定的这个额外的比较器的比较规则对集合元素进行排序。
* 实际开发中也推荐使用这中方式排序集合元素,若集合元素是自定义的
* 创建比较器也推荐使用匿名内部类的方式
*
*
*/
队列:
Queue quenu=new LinkedList();
/** boolean offer(E e)
*入队操作,向队尾追加一个新元素
*
*/
,offer()进队元素
。poll()出队元素E poll()
* 出队操作,从对首获取元素,获取后该元素就从队列中被删除了
E peek(); 引用元素 但是不会出队
栈
/**
- 栈
- 储存一组元素,但是存取元素必须遵循先进后出的原则
- 通常为了实现后退这类功能的
- java.util.deque
* 双端队列,两端都可以进队
* 当只调用从一段进出队操作时,就形成了栈结构
* 因此,双端队列为栈提供了两个方法:
* push ,pop
Map:(表)
-
java.util.Map
-
Map看起来像是一个多行两列的表格
-
以Key-Value对的形式存放元素
-
在Map中Key不允许重复(重复是依靠Key的eQuals判断)
-
常用的实现类 hashMap
-
TreeMAP
/**
* V put(K k,V v)
* 将给定的Key-value 对存入Map
*
*/ -
V put(K k,V v) 增加
* 将给定的Key-value 对存入Map
* 由于Map要求Key不允许重复,所以使用Map
* 已有的Key存入一个新的Value时的操作是替换value,那么返回值为该Key原有对应的Value
* ,那么返回值为该Key原来对应的Value。若是一个新的Key,则返回当前新的值/**
- get(K k)
- 根据给定的key获取对应的Value,若当前Map中没有给定的Key,则返回值为Noll
/
/*- V remove(K k) 删除
- 删除给定的Key所对应额Key-value对
- 返回值为被删除的Key-value对中的Value。
*/
1 * 遍历所以得Key 遍历-
Setkeyset()
*该方法会将当前的Map中所有的Key存入一个Set集合返回。那么遍历该集合就等于遍历所有KEY* 遍历每一组键值对 * Map中每一组键值对都是有Map的内部类: * java.util.Map.Entry的一个实列表示的。 * Entry有两个方法:getKey,getValue,可以分别获取这一组键值对中的Key与Value * * set<Entry>entrySet该方法将Mao中每一组键值对(Entry实列) * * */
Hashcode<>
- 当一个类的实列作为Map的kEY时,它的equals方法与hashcode方法的重写直接影响着散列表(Hashcode)
- 的查询功能
- 在API文档中Object对这两个方法的重写做了说明:当我们重写一个类的Equals方法时,就应该连同重写hashcode方法
- 着两个方法的重写应当遵循:
- 1.一致性,当两个对象equals比较为true时,hashcode方法返回的数字必须相等。反过来虽然不是必须的,但也应当遵循,否则在Hash
- code方法返回的数字必须相等。反过来虽然不是必须的,但也应当遵循,否则在hashcMap中会形成链表查询性能
- 2稳定性。hashcode的方法对此调用后返回的数字应当相同,不应是一个变化的值,除非equuals比较的属性值发生了变化
File
- java.io.File
- File的每一个实列可以表示文件系统中的一个文件或目录
- 使用File可以:
- 1.访问文件或目录的属性(如:大小,名字,修改时间)
- 2操作文件或目录(创建,删除文件和目录)
- 2.访问目录中的所有内容
- 但是不可以:
- 访问文件数据