天天看点

java进阶01Java进阶总结01

Java进阶总结01

主要内容

1.Object类

定义:java语言的根类,所有类的父类。只要类没有指定父类,
则默认继承Object类
Object类所包含的方法有:
clone()创建并返回此对象的一个副本。 
equals(Object obj) 指示其他某个对象是否与此对象“相等”。
getClass() 返回此 Object 的运行时类。
hashCode() 返回该对象的哈希码值。
notify() 唤醒在此对象监视器上等待的单个线程。
notifyAll()唤醒在此对象监视器上等待的所有线程。
toString()返回该对象的字符串表示。
wait() 在其他线程调用此对象的notify() 方法或 notifyAll() 方法前,导致
当前线程等待。
wait(long timeout)在其他线程调用此对象的 notify() 方法或 notifyAll() 方
法,或者超过指定的时间量前,导致当前线程等待。
wait(long timeout, int nanos) 在其他线程调用此对象的 notify() 
方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者
已超过某个实际时间量前,导致当前线程等待.   
           

2.System类##

概要:提供了大量的静态方法,可以获取与系统相关的信息或系统级操作
导包:java.lang.System
常见的方法有:
arraycopy(源数组, 源数组索引起始位置,目标数组,目标数组索引起始位置,
复制元素个数) 从指定源数组中复制一个数组,复制从指定的位置开始,
到目标数组的指定位置结束。
currentTimeMillis() 返回以毫秒为单位的当前时间。
identityHashCode(Object x) 返回给定对象的哈希码
           

3.StringBuilder类##

概述:StringBuilder是个字符串的缓冲区,即它是一个容器,容器中可以装很多
字符串。并且能够对其中的字符串进行各种操作。它的内部拥有一个数组用来
存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。StringBuilder
会自动维护数组的扩容。
导包:java.lang.StringBuilder
构造方法:
public StringBuilder() :构造一个空的StringBuilder容器。
public StringBuilder(String str) :构造一个StringBuilder容器,并将
字符串添加进去。
常见的方法:
public StringBuilder append(...) :添加任意类型数据的字符串形式,并
返回当前对象自身。
public String toString() :将当前StringBuilder对象转换为String对象。
           

4.Collection集合##

集合:集合是java中提供的一种容器,可以用来存储多个数据。
集合与数组的区别:
1.数组的长度是固定的。集合的长度是可变的。
2.数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是
对象。而且对象的类型可以不一致。
           
  • 集合的整体分布图
    java进阶01Java进阶总结01
常见的方法:
public boolean add(E e) : 把给定的对象添加到当前集合中 。
public void clear() :清空集合中所有的元素。
public boolean remove(E e) : 把给定的对象在当前集合中删除。
public boolean contains(E e) : 判断当前集合中是否包含给定的对象。
public boolean isEmpty() : 判断当前集合是否为空。
public int size() : 返回集合中元素的个数。
public Object[] toArray() : 把集合中的元素,存储到数组中。
</pre>
<pre>
//        创建集合,多态方式进结集合创建
        Collection<String> co = new ArrayList<String>();
//        添加元素
        co.add("1");
        co.add("2");
        co.add("3");
        co.add("4");
        System.out.println(co);     //[1, 2, 3, 4]
//       判定集合中是否包含该元素
        System.out.println(co.contains("1"));   // ture
        System.out.println(co.contains("5"));   //false
//        移除集合中的元素
        co.remove("1");
        System.out.println(co);     //[2, 3, 4]
//        显示集合元素的个数
        System.out.println(co.size());      //3
        清空集合中的所有元素
//        co.clear();
//        System.out.println(co);     //[]
      判定集合是否为空
//        System.out.println(co.isEmpty());   //true
//        集合转换为数组
     Object[] abc = co.toArray();
           

5.Iterator接口##

概述:用于迭代访问(遍历)元素,内部采用指针的方式来跟踪集合中的元素。
public Iterator iterator() : 获取集合对应的迭代器,用来遍历集合中
的元素的。
public E next() :返回迭代的下一个元素。
public boolean hasNext() :如果仍有元素可以迭代,则返回 true。

        Collection<String> cod = new ArrayList<String>();
//        添加元素
        cod.add("1");
        cod.add("2");
        cod.add("3");
        cod.add("4");
        System.out.println(cod);
//        获取集合对应的迭代器
        Iterator<String> it = cod.iterator();
        while (it.hasNext()){   //判断是否有迭代的元素
            String s = it.next();   //获取迭代出的元素
            System.out.println(s);
  }
           

6.常见的数据结构##

  • 数据储存常见结构:栈、队列、数组、链表和红黑树
  • 栈:stack,又称堆栈,它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,不允许在其他任何位置进行添加、查找、删除等操作。
特点:先进后出,栈的入口、出口的都是栈的顶端位置。
压栈:就是存元素。即,把元素存储到栈的顶端位置,栈中已有元素依次向栈底方
向移动一个位置。
弹栈:就是取元素。即,把栈的顶端位置元素取出,栈中已有元素依次向栈顶方向
移动一个位置。
           
  • 队列:queue,又称堆栈,它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。
特点:先进先出,队列的入口、出口各占一侧。
           
  • 数组:Arry,有序的元素序列,数组是在内存中开辟一段连续的空间,并在此空间存放元素。
特点:查找元素快:通过索引,可以快速访问指定位置的元素
增删元素慢:需要创建新数组,再把原数组中的元素复制到新数组中。
           
  • 链表:linked list,由一系列结点node(链表中每一个元素称为结点)组成,结点可以在运行时i动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
特点:多个结点之间,通过地址进行连接。查找元素慢,增删元素快
           
  • 红黑树:binary tree,是每个结点不超过2的有序树。
  • 二叉树是每个节点最多有两个子树的树结构。顶上的叫根结点,两边被称作“左子树”和“右子树”。
特点:速度特别快,趋近平衡树,查找叶子元素最少和最多次数不多于二倍
           
java进阶01Java进阶总结01

7.List集合##

  • 概要:继承Collection接口,允许出现重复的元素,元素以线性方式储存,有序储存,存入存出的顺序一致。
List接口特点:
1. 它是一个元素存取有序的集合。
2. 它是一个带有索引的集合。
3. 集合中可以有重复的元素。
List接口常见方法:
public void add(int index, E element) : 将指定的元素,添加到该集合中的
指定位置上。
public E get(int index) :返回集合中指定位置的元素。
public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除
的元素。
public E set(int index, E element) :用指定元素替换集合中指定位置的元素
,返回值的更新前的元素。
</pre>
## 8.List的子类##
* **ArrayList集合**
<pre>
概要:集合数据存储的结构是数组结构。
</pre>
* **LinkedList集合**
<pre>
概要:集合数据存储的结构是链表结构。
常见的方法:
public void addFirst(E e) :将指定元素插入此列表的开头。
public void addLast(E e) :将指定元素添加到此列表的结尾。
public E getFirst() :返回此列表的第一个元素。
public E getLast() :返回此列表的最后一个元素。
public E removeFirst() :移除并返回此列表的第一个元素。
public E removeLast() :移除并返回此列表的最后一个元素。
public E pop() :从此列表所表示的堆栈处弹出一个元素。
public void push(E e) :将元素推入此列表所表示的堆栈。
public boolean isEmpty() :如果列表不包含元素,则返回true。
           

9.set集合##

  • 概要:继承Collection接口,Set接口中元素无序,并且都会以某种规则保证存入的元素不出现重复
  • HadhSet集合
HashSet集合概要:元素不可重复,元素无序
根据对象的哈希值来确定元素在集合中的存储位置,具有良好的存取和查找性能。
保证元素唯一性的方式依赖于: hashCode 与equals 方法。
           
  • HashSet集合储存数据结构:采用哈希表(数组+链表+红黑树)
    java进阶01Java进阶总结01
  • LinkedHashSet
  • 概要:HashSet子类中的链表和哈希表组合的一个数据存储结构

10.Collections##

  • 概要:集合工具类,用来对集合进行操作。
常见的方法:
public static <T> boolean addAll(Collection<T> c, T... elements) :
往集合中添加一些元素。
public static void shuffle(List<?> list) 打乱顺序:打乱集合顺序。
public static <T> void sort(List<T> list) :
将集合中元素按照默认规则排序。
public static <T> void sort(List<T> list,Comparator<? super T> ) :
将集合中元素按照指定规则排序。
d shuffle(List<?> list) 打乱顺序:打乱集合顺序。
public static <T> void sort(List<T> list) :
将集合中元素按照默认规则排序。
public static <T> void sort(List<T> list,Comparator<? super T> ) :
将集合中元素按照指定规则排序。
           

继续阅读