Java基础笔记13
1.集合与对象数组的区别
集合与对象数组共同点:都是存放对象的容器;
区别在于:①集合是没有长度限制的;②集合容器中没有类型的限制。
2.集合(都在Java.util包下)
常用的集合:Collection、List、Set、Map
Collection
是存放单值的最大父接口,可以向其中保存多个单值(对象)数据。一般很少直接使用此接口直接操作。
List
是Collection接口的子接口,也是最常用的接口。可以存放重复的内容,是有序集合。
根据底层结构不同划分如下:
ArrayList: 底层结构为数组结构.
特点:查询,修改速度快,删除和增加慢.线程异步,线程不安全.
LinkedList: 底层结构为链表结构.
特点:查询,修改速度慢,删除和增加快.
Vector: 底层结构为数组结构.
特点:查询,修改速度快,删除和增加慢.线程同步,线程安全.
Set
是无序集合,不能存放重复元素.Set接口的主要方法与Collection是一致的。
根据底层结构不同划分如下:
HashSet:底层是一个哈希表结构.
元素存放规则:
如果存放的元素哈希值不同,则直接存放在HashSet集合中;
如果存放的元素哈希值相同,则再比较equals是否相同,如果不同则存放到HashSet集合中,如果相同则不会存放到HashSet集合中.
TreeSet: 底层是二叉树结构.
TreeSet支持两种排序方法:自然排序和定制排序。TreeSet默认采用自然排序。
自然排序:往TreeSet添加一个对象必须指定好排序规则,且TreeSet的每个对象所在类要实现Comparable接口,并重写compareTo方法才可以正常使用,否则会出现类转换异常;
定制排序:自定义排序规则,自定义排序类MyCompare必须实现Comparator接口,并重写public int compare(Object o1, Object o2){}方法,使用时在TreeSet实例化声明TreeSet ts=new TreeSet(new MyCompare());就可以正常使用,这样种情况用于开发过程中对象所在类不能实现Comparable接口的情况。
TreeSet存放元素时,使用比较器比较后,如果比较后相同,不存放;不同,则存放。
Map:是一种键值对结构.(一键对应一个值.键不允许重复.)
添加元素时,键是唯一的,如果添加相同的键元素时,则会把原来的覆盖.
如何判断键是否相同.根据Hash值以及equals判断的.
HashMap.基于哈希表的 Map 接口的实现并允许使用 null 值和 null 键,此实现是异步的,性能更高。
Hashtable.此类实现一个哈希表任何非 null 对象都可以用作键或值。Hashtable 是同步的,性能较低。
几个常用类的区别
1.ArrayList: 元素单个,查询,修改速度快,删除和增加慢,线程不安全 ,异步
2.Vector: 元素单个,查询,修改速度快,删除和增加慢,线程安全,同步
3.LinkedList:元素单个,查询,修改速度慢,删除和增加快
4.HashMap: 元素成对,元素可为空 ,异步的,性能更高
5.HashTable: 元素成对,线程安全,元素不可为空, 同步的,性能较低。
Iterator与 ListIterator的区别
1. ListIterator有add()方法,可以向List中添加对象,而Iterator不能;
2. ListIterator和 Iterator都有hasNext()和next()方法,可以实现顺序向后遍历;但 ListIterator可以实现顺序向前遍历,而Iterator不能;
3. ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()方法可以实现,而Iterator没有此方法;
4. ListIterator和 Iterator都可以实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现,Iterator仅能遍历,不能修改。因为ListIterator的这些功能,可以实现对LinkedList等List数据结构的操作。
3. 集合中常见的方法以及方法的作用
常用集合类的继承结构如下:
Collection<--List<--Vector
Collection<--List<--ArrayList
Collection<--List<--LinkedList
Collection<--Set<--HashSet
Collection<--Set<--HashSet<--LinkedHashSet
Collection<--Set<--SortedSet<--TreeSet
Map<--SortedMap<--TreeMap
Map<--HashMap
Collection Set HashSet TreeSet常用方法
public
boolean add(Object o) 往集合中添加元素,添加成功返回true
public
boolean addAll(Collection c) 往集合中添加多个元素,添加成功返回true
public
void clear() 移除集合中所有元素
public
boolean contains(Object o) 如果集合包含指定元素,则返回true
public
boolean containsAll(Collection c) 如果集合包含指定集合中的所有元素,则返回true
public
boolean remove(Object o) 移除集合中指定元素,成功则返回true
public
boolean retainAll(Collection c) 求两个集合的交集,并保留在集合中,成功返回true
public
int size() 返回此集合容器元素的个数
public
Object[] toArray() 返回此集合的元素对象数组
public
Iterator iterator() 返回此集合元素的迭代器,用于遍历集合元素
List ArrayList
LinkedList常用方法
public Object get(int index)
获取指定位置上的单个元素,下标0开始
public int
indexOf(Object o) 查询某个元素第一次在集合中的位置
public int
lastIndexOf(Object o) 查询某个元素最后一次在集合中的位置
public ListIterator
listiterator() 返回此集合元素的列表迭代器,初始位置开始
public ListIterator
listiterator(int index) 返回此集合元素的列表迭代器,从指定位置开始
public E set(int index, E
element) 把index位置上的元素替换为element,并返回被替换的元素
public List<E>
subList(int fromIndex, int toIndex) 截取从fromIndex(包括)到toIndex(不包括)的元素,返回一个集合
LinkedList扩充的方法
public void addFirst(E e) 将指定元素插入此列表的开头
public E poll() 获取并移除此列表的开头
public E pollLast() 获取并移除此列表的末尾;如果此列表为空,则返回 null
Map Hashmap
Hashtable的常用方法
public V
put (K key, V value) 添加值与键
public
int size() 返回长度
public void
clear() 清空所有元素
public
boolean containsKey(Object key) 是否包含指定键
public
boolean containsValue(Object value) 是否包含指定值
public
V get(Object o) 根据Key获取对应的value值,不包含返回null
public
Set keySet() 将此映射包含的键放入Set集合中,调用此方法后,使用增强循环或迭代器即可遍历此映射
public
V remove (Object key) 移除此键值对
public
Collection<V>values() 将此映射包含的值放入Collection中
递归调用 显示该目录下所有文件
public class Test {
public static void main(String[] args) {
File file=new File("文件对象的路径");
Check(file);
}
/**
* 递归调用
* @param file 显示该目录下所有文件
*/
public static void Check(File file){
if (file.isDirectory()) {
File[]f=file.listFiles();
for (File i : f) {
Check(i);
}
} else {
System.out.println(file);
}
}
}
Java基础笔记13的更多相关文章
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 | 被围观 25,969 views+ 1.Anno ...
- 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错
原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...
- JAVA自学笔记13
JAVA自学笔记13 1.StringBuffer类 1)线程安全的可变字符序列 线程安全(即同步) 2)StringBuffer与String的区别:一个可变一个不可变 3)构造方法: ①publi ...
- 黑马程序员----java基础笔记中(毕向东)
<p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...
- 黑马程序员----java基础笔记上(毕向东)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...
- Java基础笔记05-06-07-08
五.今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 ...
- Java基础笔记1
java (开源,跨操作系统)j2ee jre java基础 javaoop java高级 JDK(JAVA developer Kitool): java开发工具 (开发人员使用) JRE(java ...
- Java基础笔记(一)——JDK、JRE、JVM
JDK.JRE和JVM三者的关系 Java程序执行过程 JVM(java virtual machine) 注:由于各种操作系统(windows.linux等)支持的指令集(二进制可执行代码)不同,程 ...
- 夯实Java基础系列13:深入理解Java中的泛型
目录 泛型概述 一个栗子 特性 泛型的使用方式 泛型类 泛型接口 泛型通配符 泛型方法 泛型方法的基本用法 类中的泛型方法 泛型方法与可变参数 静态方法与泛型 泛型方法总结 泛型上下边界 泛型常见面试 ...
随机推荐
- UDP接收百万级数据的解决方案
小序 到新公司不久,就接到一个任务:有个发送方,会通过udp发送一些信息,然后服务接收到信息后保存到数据库的一张表A,保存的这些数据在经过一系列处理,处理完成后累积到另一张表B,然后清空处理的表A的数 ...
- hadoop大事件
大事件: Hadoop新一代(2.x)计算平台YARN 一代hadoop存在的问题: 1.Jobtracker单点,容易导致崩溃,节点较多时造成性能瓶颈 2.作业分配基于槽位(slot),分配粒度 ...
- Python初识2
27.Python中没有{}括起来的代码块,使用pass来代替c语言中的{(无内容)}: 28.使用__name__来指示模块是如何加载的,如果是被导入的,那么__name__就是该模块的名字,如果是 ...
- 用wrk测试nginx/ndoejs/golang
sudo taskset -c ./wrk -c1 -t1 -d30 http://localhost/hello wrk+nginx(helloworld module) sudo taskset ...
- 如何用kaldi做孤立词识别-初版
---------------------------------------------------------------------------------------------------- ...
- Floyd算法(最短路)
如题,这是最短路算法Floyd. Floyd,是只有五行的代码. 简单,易懂.O(N的三方)的时间也可以. 遇到简单的就这么用. #include<iostream> #include&l ...
- SQL语言知识点总结
1.DQL.DML.DDL.DCL的概念与区别 一.SQL(Structure Query Language)语言是数据库的核心语言. SQL的发展是从1974年开始的,其发展过程如下: 1974年- ...
- 移动HTNL5前端框架—MUI
前 言 JRedu 鉴于之前的很多前端框架(特别是响应式布局的框架),UI控件看起来太像网页,没有原生感觉,因此追求原生UI也是MUI的重要目标.MUI以iOS平台UI为基础,补充部分Andro ...
- apache 安装/mod_dir.so: undefined symbol: apr_array_clear
apache 安装好后 启动出错: httpd: Syntax error on line 143 of /usr/local/apache2/conf/httpd.conf: Cannot load ...
- Java历程-初学篇 Day07 循环结构2 for循环
一,格式 for(赋值语句//为循环变量赋初值;条件语句//循环结构的循环条件;赋值语句//迭代,修改循环变量的值){ //循环体; } 二,简单举例 for(int i=1;i<=10;i++ ...