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. springmvc04-文件上传-JSON数据

    文件上传部分: 1, 导入commons-fileupload-1.2.2.jar commons-io-2.4.jar 两个jar包. 2, 在主配置文件中,添加如下信息 <!-- 文件上传- ...

  2. js对象详解(JavaScript对象深度剖析,深度理解js对象)

    js对象详解(JavaScript对象深度剖析,深度理解js对象) 这算是酝酿很久的一篇文章了. JavaScript作为一个基于对象(没有类的概念)的语言,从入门到精通到放弃一直会被对象这个问题围绕 ...

  3. 关于Linux的loop设备

    偶然发现/dev目录里有几个loop设备,一番搜索得知,这是一种伪设备(pseudo-device),它可以把一个文件连接为设备(就像Windows下用虚拟光驱挂载ISO文件). 遂做实验验证: 1. ...

  4. 洗礼灵魂,修炼python(7)--元组,集合,不可变集合

    前面已经把列表的基本用法讲解完 接着讲python的几大核心之--元组(tuple) 1.什么是元组? 类似列表,但为不可变对象,之前提到列表是可变对象,所谓可变对象就是支持原处修改,并且在修改前后对 ...

  5. 51 nod 1097 拼成最小的数 思路:字符串排序

    题目: 思路:1.以字符串输入这些整数. 2.对这些字符串排序,排序规则为尽量让能让结果变小的靠前. 代码中有注释,不懂的欢迎在博客中评论问我. 代码: #include <bits\stdc+ ...

  6. Spring Boot-------JPA——EntityManager构建通用DAO

    EntityManager EntityManager 是用来对实体Bean 进行操作的辅助类.他可以用来产生/删除持久化的实体Bean,通过主键查找实体bean,也可以通过EJB3 QL 语言查找满 ...

  7. SQL语句表名或者字段名和保留字冲突解决方法

    最近开发遇到一个很奇葩的问题,简单做一下笔记 select * from Add ... 以上SQL语句会报错. 原因Add是表名,SQL语句保留字中又有Add 解决方法: select * from ...

  8. Optional乱用Empty之No value present

    前言 看到好多文章都是推荐采用Optinal的,而经常我遇到问题的时候就想:如果设计成optional的话就不会忽略这种NullPointException错误了.然而,optional并不是想用就随 ...

  9. Android签名机制---签名过程

    大神文章:http://blog.csdn.net/jiangwei0910410003/article/details/50402000 一.知识点 1.数据摘要(数据指纹).签名文件,证书文件 2 ...

  10. 利用工具爬取网站所有的html和js文件

    例图: 该工具下载地址为:http://www.tenmax.com/teleport/ultra/download.htm