集合比数组的优势:

1.集合可以存任意类型的变量,长度是可变的

2.数组只能存同一类型的变量,长度是固定的

3.集合中只能存对象

List集合 : 接口  提供公有的方法

特有的方法:

1.List中特有的方法都是通过下标来操作元素的

查找:

add(int index,Object 0)添加元素到指定的位置

get(int index),获取集合中指定位置的元素

Set(int index,object o),用来修饰集合中指定位置的元素的值

迭代器:

作用:操作集合中的元素,可以(增 , 删 ,改 ,查)

根迭代器:Iterator   接口  集中获取迭代器 :  通过集合中的方法获取迭代器

collection 集合中获取迭代器:Iterator();

迭代器中的方法:

hasNext();//判断当前指针指向的位置是否有元素

next();     //获取当前指针指向的元素,并且指针下移一位

remove(); //移除最后操作是指针指向的元素

ListIterator: 中的特有方法:

hasPrpvious();判断当前指针指向的上一个位置是否存在元素

provious();     获取上一个元素

proviousIndex();获取上一个元素所在的位置

add();在当前指针指向的位置添加一个元素

set();修改当前指针指向的元素

1.add和set不能同事使用

2.如果使用迭代器操作元素,那么就不要用集合来操作元素

ArratList  : 底层是维护一个Object[] 数组,默认的容量是10,如果容量不够,增加为原来的1.5倍,

优点:查找块 ,增删慢

trimToSize()。调整集合的容量和数据保持一致

ensureCapacity(int minCapacity)自定义容量

LinkedList :连接列表实现, 特点:添加元素比较快。查找慢

LinkedList特有的方法:

方法介绍:

addFirst(E e)

addLast()

getLast()

removeFirst()

removeLast()

如果集合中没有元素,获取或者删除元素抛:NoSuchElementException:没有找到元素的异常

数据结构:

第一个方法  :  List.push(“***”) //往集合的堆栈中推入一个值

System.out.println("从集合中堆栈中取出值:"+list.pop());  // 狗娃   移除push进去的对象   pop()取栈中最上面的对象

先进先出:

list.offer(“狗娃”);

System.out.printn(list.poll());  // 会将元素从集合中移除

获取逆序的迭代器

descendingIterator()
          返回以逆向顺序在此双端队列的元素上进行迭代的迭代器。

eg:   Iterator it= list.descendingIterator()

while(it.hasNext){

System.out.println(it);    反着打印出来

}

Vector : 描述的是一个线程安全的ArrayList 使用和ArrayList一样   (只需了解)

vector 和 ArrayList 区别

相同点:   底层都是用object数组来实现的

不同点:

1.ArrarList是线程不同步,操作效率高,  ArrayList是在jdk1.2出现的

2.Vector 线程是同步,操作效率低,  是在jdk1.0时候出现的

Set集合:也是一个接口,继承collection接口,元素是无序的,不能用索引值来取值,不能 重复

hashSet 存值得一个原理:

首先会调用对象的hashCode方法获取hashCode值,通过移位等运算获取一个位置

情况1:如果位置上是没有元素,直接将元素存放在该位置上

情况2:如果位置上已经有了元素,用对象的equals方法和位置上已经存在的对象比较,如果equals返回的是true那就代表是重复对象,就不存在,如果返回的是false将对象和原有的对象存在一起

想要遍历Set集合:1.将集合变为数组,2.通过迭代器来遍历(无序:添加的顺序和打印出来的顺序是不一样的、)

Treeset:使用元素的自热顺序对元素进行排序,底层使用二叉树来实现

Treeset使用注意点:

1.往TreeSet添加对象的时候,如果对象有这个自然排序的特性,就按照这个自然排序进行排序

2.往TreeSet添加对象的时候,如过对象本身不具备自然排序的特性,运行的时候回报错,如果需要存储对象,那么的对象的类必须要实现CompareTo接口  把元素的比较的规格定义在CompareTo方法中

3.往TreeSet添加对象的时候,如果对象本身不具备自然排序的特性,并且没有实现Comparable 接口,那么这个时候需要创建一个TreeSet的时候传入一个比较器

比较器的定义方式:

class 类名  inplements  Compartor{

}

4.如果类中实现了Comparable 接口,又在创建Treeset时传入一个比较器,这个时候以比较器为标准。

java中的集合的更多相关文章

  1. Java 中的集合接口——List、Set、Map

    Java 中的集合接口——List.Set.Map 什么叫集合:集合就是Java API所提供的一系列类的实例,可以用于动态存放多个对象.这跟我们学过的数组差不多,那为什么我们还要学集合,我们看看数组 ...

  2. 实现java 中 list集合中有几十万条数据,每100条为一组取出

    解决"java 中 list集合中有几十万条数据,每100条为一组取出来如何实现,求代码!!!"的问题. 具体解决方案如下: /** * 实现java 中 list集合中有几十万条 ...

  3. java中对集合对象list的几种循环访问

    java中对集合对象list的几种循环访问的总结如下 1 经典的for循环 public static void main(String[] args) { List<String> li ...

  4. 菜鸟日记之 java中的集合框架

    java中的集合框架图 如图所示:java中的集合分为两种Collection和Map两种接口 可分为Collection是单列集合和Map的双列集合 Collection单列集合:继承了Iterat ...

  5. C#与java中的集合区别

    集合一般的操作       插入: add       删除: remove       查找: contains,remove java中的集合 注意哪些是接口,哪些是实现类 使用集合的时候 1. ...

  6. java中list集合的内容,如何使用像数据库中group by形式那样排序

    java中list集合的内容,如何使用像数据库中group by形式那样排序,比如:有一个 List<JavaBean> 他中包含了一些如下的内容JavaBean:name    mone ...

  7. Java中的集合类型的继承关系图

    Java中的集合类型的继承关系图

  8. (转)java中对集合对象list的几种循环访问总结

    Java集合的Stack.Queue.Map的遍历   在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack.Queue.Map类型的遍历,还是有一 ...

  9. java中的集合操作类(未完待续)

    申明: 实习生的肤浅理解,如发现有错误之处.还望大牛们多多指点 废话 事实上我写java的后台操作,我每次都会遇到一条语句:List<XXXXX> list = new ArrayList ...

  10. Java中的集合概述

    Java中的集合类有两个重要的分支,分别是接口Collection(包括List,Set等)和接口Map. 由于HashSet的内部实现原理使用了HashMap,所以我们先来了解Map集合类. 1.H ...

随机推荐

  1. Spark在Ubuntu中搭建开发环境

    一.在Windows7中安装Ubuntu双系统 工具/原料   windows7 64位 ubuntu 16.04 32位 UltraISO最新版(用来将镜像文件烤到U盘中) 空U盘(若有文件,请先备 ...

  2. Matlab2015入门学习02

    1. 续行符 ... 当物理的一行之内写不下时, 在 物理行的结尾加上三个小黑点 >>跟在运算符之后,可以不留space空格 >>跟在数字之后,若不留白space,出错; 留一 ...

  3. RGW 负载均衡和高可用的几个方案对比

    注:在RGW网关主机网卡已经是10Gb的情况下,如下三个方案没有引入LVS:如果RGW是Gb网卡,可以考虑引入LVS做流量负载均衡. RGW部署采用 fastcgi+nginx 扩展性和可配置性更强. ...

  4. Pyhont-Urllib2

    Urllib2 相当于的Urllib  的升级版 但又不能代替 Urllib 这个我得新手很费解呢...这个问题留着把,,等以后成大牛的时候在回来想想这儿问题!! Urllib2 常用 // 1 设置 ...

  5. iOS对键盘的处理

    方法1. 使用<UITextFeildDelegate>,使用的UITextField示例 设置其Delegate为self,点击return按钮隐藏键盘.实现函数如下:    - (BO ...

  6. [React] 多组件生命周期转换关系

    前段时间一直在基于React做开发,最近得空做一些总结,防止以后踩坑. 言归正传,React生命周期是React组件运行的基础,本文主要是归纳多组件平行.嵌套时,生命周期转换关系. 生命周期 Reac ...

  7. onmousewheel跟onscroll的区别

    研习DOM中的事件方法,发现一些细微差别,百度一下没有类似的解答,随手记下来. onmousewheel事件  以下摘自http://help.dottoro.com/ljmracjb.php Bro ...

  8. qthread 使用 signal 方法通信

    因为之间尝试过的 signal 机制,都是在 emit singnal_my() 的地方,直接调用了 slot 函数:相当于,slot 只是一个回调函数. 所以,在这里有点困惑,如果是要顺序执行完 s ...

  9. 菜鸟的Python学习之路(流水账)

    揭开Python的面纱 开始是因为别人说Python简单才开始学的,然后那段时间刚考完研,也没什么事,就多少瞅了瞅,然后发现语法的确简单很多,或者说简洁更合适. 当时看的是简明Python教程,没用多 ...

  10. Python Day8

    Socket Socket是网络编程的一个抽象概念.通常我们用一个Socket表示"打开了一个网络链接",而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型 ...