java中的集合
集合比数组的优势:
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中的集合的更多相关文章
- Java 中的集合接口——List、Set、Map
Java 中的集合接口——List.Set.Map 什么叫集合:集合就是Java API所提供的一系列类的实例,可以用于动态存放多个对象.这跟我们学过的数组差不多,那为什么我们还要学集合,我们看看数组 ...
- 实现java 中 list集合中有几十万条数据,每100条为一组取出
解决"java 中 list集合中有几十万条数据,每100条为一组取出来如何实现,求代码!!!"的问题. 具体解决方案如下: /** * 实现java 中 list集合中有几十万条 ...
- java中对集合对象list的几种循环访问
java中对集合对象list的几种循环访问的总结如下 1 经典的for循环 public static void main(String[] args) { List<String> li ...
- 菜鸟日记之 java中的集合框架
java中的集合框架图 如图所示:java中的集合分为两种Collection和Map两种接口 可分为Collection是单列集合和Map的双列集合 Collection单列集合:继承了Iterat ...
- C#与java中的集合区别
集合一般的操作 插入: add 删除: remove 查找: contains,remove java中的集合 注意哪些是接口,哪些是实现类 使用集合的时候 1. ...
- java中list集合的内容,如何使用像数据库中group by形式那样排序
java中list集合的内容,如何使用像数据库中group by形式那样排序,比如:有一个 List<JavaBean> 他中包含了一些如下的内容JavaBean:name mone ...
- Java中的集合类型的继承关系图
Java中的集合类型的继承关系图
- (转)java中对集合对象list的几种循环访问总结
Java集合的Stack.Queue.Map的遍历 在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack.Queue.Map类型的遍历,还是有一 ...
- java中的集合操作类(未完待续)
申明: 实习生的肤浅理解,如发现有错误之处.还望大牛们多多指点 废话 事实上我写java的后台操作,我每次都会遇到一条语句:List<XXXXX> list = new ArrayList ...
- Java中的集合概述
Java中的集合类有两个重要的分支,分别是接口Collection(包括List,Set等)和接口Map. 由于HashSet的内部实现原理使用了HashMap,所以我们先来了解Map集合类. 1.H ...
随机推荐
- 备忘:maven 中指定版本
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> ...
- CCPC2016杭州现场赛
A(hdu5933):(贪心) 题意:长度为n的数组: a1, a2,⋯, 每次操作要么可以merge两个相邻的数为一个, 值为两个数的和; 要么可以把一个数分裂成两个, 两个数的和为原数. 用最少的 ...
- 简单所以不要忽视,关于\r\n和\n程序员应了解的实际应用
众所周知,\r叫回车符,\n叫换行符. 由于历史原因,windows环境下的换行符是\r\n;(文章最后会稍微解释这个历史原因) linux和html等开源或公开标准中的换行符是\n. 记录这篇笔记的 ...
- 关于GIL
1同一时刻只有一个线程通过一个线程到解释器运行 2在多核上会有些不一样 不仅仅会降低python的效率 并且还会影响到整个机器系统的效率 python的gil是每100条cpu指令开始check 如果 ...
- 自定义View其实很简单系列1-12
作者: AigeStudio http://blog.csdn.net/aigestudio 说明:文中的1/12表示12篇中的第1篇, 1/6=2/12表示12篇中的第2篇,其它类似. 自定义控件 ...
- VS 团队资源管理 强制解锁锁定文件
故事是这样发生的: 以前有台电脑,在团队资源里看程序,可能冥冥中不小心按了个空格,so,文件被锁定 而我却没有发现 如果再给我一个机会,我只想说记得签入 然后,高潮来了 重装电脑 欣喜的装好新机子打开 ...
- js兼容获取元素的样式
js获取元素的样式的兼容性处理: function getStyle(obj,attr){ return obj.currentStyle?obj.currentStyle[attr]:getComp ...
- u盘安装系统教程详解
一.准备阶段 提前准备一个至少1G或以上的u盘,方便好用. 1.制作u盘启动工具 (1)工具下载,推荐IT天空的优启通 下载地址:https://www.itiankong.net/thread-37 ...
- jQuery倒计时插件
倒计时jQuery插件 引言 最近又换工作了,还不错,我换工作的次数其实有点频繁,2014年7月份毕业,到现在工作已经换了3份了,工资跟刚毕业时候相比也涨了点儿,最近一次换工作我离开了深圳,来到了北京 ...
- 一道关于阿里简单面试题的反思C/C++
题目是这样的: 正在挑战一个CrackMe的你,把需要填写的前面几位密码都正确猜出了,可是这最后一位密码,好像藏得有点深.CrackMe的作者还挑衅般的在里面藏了个.tar.gz文件,解压缩出来,里面 ...