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. 杂谈--DML触发器学习

    触发器按类型分为三类: 1. DML 触发器,在数据变更时触发: 2. DDL 触发器,在修改数据库级别或实例级别对象时触发: 3. Login 触发器,在用户登录时触发: 最常见的是DML触发器,D ...

  2. Maven仓库搜索jar包依赖网址

    可在该网站搜索jar包依赖 http://search.maven.org/

  3. 在 JavaScript 中使用构造器函数模拟类

    今天,我们要讲的是在 JavaScript 中使用构造器函数(construcor function)模拟类. 构造器函数简介 你可以使用 ES6 的 class 关键字来实现类,不过我建议你使用传统 ...

  4. 从Thread.start()方法看Thread源码,多次start一个线程会怎么样

    这篇文章作为Thread类源码剖析的补充,从一个侧面来看Thread源码.也解答了面试高频问题:"多次start一个线程会怎么样?" 答案是:java.lang.IllegalTh ...

  5. 第5章 不要让线程成为脱缰的野马(Keeping your Threads on Leash) ----初始化一个线程

    使用线程的一个常见问题就是如何能够在一个线程开始运行之前,适当地将它初始化.初始化最常见的理由就是为了调整优先权.另一个理由是为了在SMP 系统中设定线程比较喜欢的 CPU.第10 章谈到 MFC 时 ...

  6. Treblecross 博弈SG值

    Treblecross is a two player game where the goal is to get three X in a row on a one-dimensional boar ...

  7. 简易RPC框架-过滤器机制

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  8. ASP.NET没有魔法——ASP.NET与数据库

    在之前的文章中介绍了使用ASP.NET MVC来开发一个博客系统,并且已将初具雏形,可以查看文章列表页面,也可以点击文章列表的其中一篇文章查看详情,这已经完成了最开始需求分析的读者的查看列表和查看文章 ...

  9. java web jsp学习笔记--概述-常用语法,指令,动作元素,隐式对象,域对象

     JSP学习笔记 1.什么是jsp JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.JSP/Servlet规范.JS ...

  10. 扩展js,实现c#中的string.format方便拼接字符串

    //"{0}-{1}-{2}".format("xx","yy","zz") //显示xx-yy-zz String.p ...