集合框架 【学习笔记】

一。
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.访问目录中的所有内容
  • 但是不可以:
  • 访问文件数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值