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的更多相关文章

  1. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Anno ...

  2. 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错

    原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...

  3. JAVA自学笔记13

    JAVA自学笔记13 1.StringBuffer类 1)线程安全的可变字符序列 线程安全(即同步) 2)StringBuffer与String的区别:一个可变一个不可变 3)构造方法: ①publi ...

  4. 黑马程序员----java基础笔记中(毕向东)

    <p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...

  5. 黑马程序员----java基础笔记上(毕向东)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...

  6. Java基础笔记05-06-07-08

    五.今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 ...

  7. Java基础笔记1

    java (开源,跨操作系统)j2ee jre java基础 javaoop java高级 JDK(JAVA developer Kitool): java开发工具 (开发人员使用) JRE(java ...

  8. Java基础笔记(一)——JDK、JRE、JVM

    JDK.JRE和JVM三者的关系 Java程序执行过程 JVM(java virtual machine) 注:由于各种操作系统(windows.linux等)支持的指令集(二进制可执行代码)不同,程 ...

  9. 夯实Java基础系列13:深入理解Java中的泛型

    目录 泛型概述 一个栗子 特性 泛型的使用方式 泛型类 泛型接口 泛型通配符 泛型方法 泛型方法的基本用法 类中的泛型方法 泛型方法与可变参数 静态方法与泛型 泛型方法总结 泛型上下边界 泛型常见面试 ...

随机推荐

  1. Qt Creator编译运行成功,但是显示系统找不到指定的文件(比如urlmon.dll动态链接库)

    问题: 以前自己写的一个QT界面程序,在win 7 的32位系统上运行没有出现任何问题,但是重装系统之后,同样的程序放到win10 的64位系统下运行会出现警告:onecoreuap\inetcore ...

  2. JVM菜鸟进阶高手之路五

    转载请注明原创出处,谢谢! 参考gc,发现大概一小时运行一次FGC,特别奇怪,笨神一看这样的问题就知道是system gc导致的,rmi默认一小时主动触发一次,由于没有gc日志,通过jstat命令观察 ...

  3. Java定时任务调度详解

    前言 在实际项目开发中,除了Web应用.SOA服务外,还有一类不可缺少的,那就是定时任务调度.定时任务的场景可以说非常广泛,比如某些视频网站,购买会员后,每天会给会员送成长值,每月会给会员送一些电影券 ...

  4. 我的Spring学习记录(三)

    学习了AOP之后就可以应用一下了,所以这次我们了解一下Spring的声明式事务. 事务在我们的很多方面都可以体现,就拿我们平时的买卖活动,或者是银行的转账来说,这些活动要么是成功,要么是失败,比如:张 ...

  5. snmp4j 之 ArgumentParser

    ArgumentParser ArgumentParser命令行解析器 将数组转换成Java对象 根据预定计划选项和参数,以及相应的命令行选项联合每个对象 ArgumentParser argumen ...

  6. 洗礼灵魂,修炼python(3)--从一个简单的print代码揭露编码问题,运行原理和语法习惯

    前期工作已经准备好后,可以打开IDE编辑器了,你可以选择python自带的IDLE,也可以选择第三方的,这里我使用pycharm--一个专门为python而生的IDE 按照惯例,第一个python代码 ...

  7. #翻译#原文来自Database.System.Concepts(6th.Edition.2010)2.6Relational Operations,原文作者Abraham Silberschaz , Henry F. Korth , S. Sudarshan

    2.6关系操作 所有的过程关系查询语言都提供一组操作,这些操作可以应用于单个关系或一对关系.这些操作具有良好的和期望的属性,它们的结果总是一个单一的关系.这个属性允许一个以模块化的方式组合其中的几个操 ...

  8. apollo实现c#与android消息推送(一)

    之前做了c#推送消息到手机端,限于网络要求,不能使用百度等现成的推送,查了许多资料,七拼八凑终于凑齐,记录下来,即是复习也是希望对来者有所帮助. 我开发的环境是windows,使用java开发的Apa ...

  9. bzoj4033(树上染色)

    树上染色 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并 将其他的N-K个点染成白色.将所有点染色后,你会获得黑点两两之间的距离加上白点两两 ...

  10. AIM Tech Round 4 (Div. 2)ABCD

    A. Diversity time limit per test 1 second memory limit per test 256 megabytes input standard input o ...