本文共 4289 字,大约阅读时间需要 14 分钟。
老师说今天大家上课状态不好,唉明天就是最后一天了,好舍不得这个老师。今天老师讲了算法结构。话不多说,直接上笔记。
数组 => 一组[类型相同]而且[存储空间连续]的数据 => 一组数据数组最大的特点:[存储空间连续]ArrayList => 底层基于数组实现的 有序 不唯一的单值类型集合
链表 => LinkedList => 底层基于链表实现的 有序 不唯一的单值类型集合双向循环链表 双向:每一个元素记录下一个元素的同时 还要记录自己的上一个元素是谁 循环:首尾相连添加:形成双向循环链表 添加元素时要尊重4句话 1.新元素的下一个指向header 2.新元素的上一个指向header的上一个 3.新元素的下一个的上一个指向新元素本身 4.新元素的上一个的下一个指向新元素本身(C)H(A) (H)A(B) (A)B(C) (B)C(H)删除:要尊重两句话 加入要删除的元素是X 则 X的上一个的下一个 指向X的下一个 X的下一个的上一个 指向X的上一个(C)H(A) (H)A(C) { (A)B(C) } (A)C(H) B的上一个的下一个 指向B的下一个 finish B的下一个的上一个 指向B的上一个 ------------------------------- (A)H(A) (H)A(H) 3 4 2 1 (B)H(A) (H)A(B) (A)B(H) 3 4 2 1 (C)H(A) (H)A(B) (A)B(C) (B)C(H) 3 4 2 1 ================================= 栈 => LIFO => Last In First Out => 后进先出 1> 电梯 2> 弹夹 3> 丁一的故事~ push() 压栈 pop() 弹栈 Stack -> 使用数组模拟栈结构的实现~ 同样有序不唯一的单值类型集合 ===================================== => 先进先出 ========================================= 哈希表 = 散列表 = Hashtable哈希 => hash 散列:将一大组数据 分散排列成若干小组 26 13 37 77 86 95 [0] [1] 77 37 13 [2] 86 26 [3] 95 38 %4 => &3HashSet => 底层基于哈希表实现的无序 但是唯一的集合======================数组 => ArrayList链表 => LinkedList栈 => Stack队列 => Queue哈希表 => HashSet二叉树 => TreeSet
James Gosling => Java之父
Joshua Bloch => Java之母
ArrayList & LinkedList 有什么区别ArrayList底层基于数组实现
存储空间是连续的 查找遍历效率较高 但是添加删除元素效率较低
LinkedList 底层基于链表实现
底层存储空间并不连续 查找遍历效率较低 但是添加删除效率极高
单词判断是否正确的工具
import java.util.*;//用Sun公司提供给我们的哈希表实现import java.io.*;//Input Output 读取文件内容import javax.swing.*;//轻量级组件包public class Gogo{ public static void main(String[] args)throws Exception{ HashSetset = new HashSet<>(16384,10.0F); / FileReader fr = new FileReader("EtoakWords.txt");//针头 BufferedReader br = new BufferedReader(fr);//针管 String str; while((str = br.readLine())!=null){ set.add(str.toLowerCase());//添加到哈希表当中 } br.close(); / while(true){ String word = JOptionPane.showInputDialog(null,"请输入您要检查的单词"); word = word.toLowerCase(); if(word == null || "88".equals(word) || "3166".equals(word)){ JOptionPane.showMessageDialog(null,"感谢您的使用 欢迎再次使用~"); break; } if(set.contains(word)){ JOptionPane.showMessageDialog(null,"恭喜您~ 拼写正确"); }else{ JOptionPane.showMessageDialog(null,"很抱歉~ 拼写错误"); } } }}
TestHashSet//底层默认分成16组,必须底层分成2^n
import java.util.*;public class TestHashSet{ public static void main(String[] args){ HashSetset = new HashSet<>(8); set.add(33); set.add(33); set.add(33); set.add(33); set.add(55); set.add(77); set.add(44); System.out.println(set); //[33, 44, 77, 55] }}
TestArrayList
import java.util.*;//utilpublic class TestArrayList{ public static void main(String[] args){ ArrayListlist = new ArrayList (); list.add(14); list.add(53); list.add(26); list.add(55); System.out.println(list); //[14, 53, 26, 55] }}
TestLinkedList
import java.util.*;public class TestLinkedList{ public static void main(String[] args){ LinkedListlist = new LinkedList (); list.add("Banana"); list.add("Orange"); list.add("Apple"); System.out.println(list); //[Banana, Orange, Apple] }}
TestStack
import java.util.*;public class TestStack{ public static void main(String[] args){ Stackstk = new Stack<>(); stk.push("香蕉"); stk.push("橘子"); stk.push("西瓜"); System.out.println(stk.pop()); System.out.println(stk.pop()); System.out.println(stk.pop()); /*西瓜 橘子 香蕉*/ }}
TestTreeSet1
import java.util.*;public class TestTreeSet{ public static void main(String[] args){ TreeSetset = new TreeSet<>(); set.add("Jay"); set.add("Andy"); set.add("Jacky"); set.add("Aaron"); set.add("Leon"); System.out.println(set); //[Aaron, Andy, Jacky, Jay, Leon] }}
TestTreeSet2
import java.util.*;public class TestTreeSet{ public static void main(String[] args){ TreeSetset = new TreeSet<>(); set.add(11); set.add(53); set.add(49); set.add(22); set.add(86); set.add(57); System.out.println(set); //[11, 22, 49, 53, 57, 86] }}
%x x必须是2^n 才满足 %x = &(x - 1)
Viva i18n //中间有18个省略 Internationalization => 国际化
Java编程语言(第三版)----James Gosling(Java之父)
Java编程思想(第4版)-----Bruce Eckel
JAVA 2核心技术 卷I:基础知识(原书第8版)----Cay Horstmann
JAVA 2核心技术 卷II:高级特性(原书第8版)----Cay Horstmann
Effective Java中文版--------Joshua Bloch