DAY03-数据结构

老师说今天大家上课状态不好,唉明天就是最后一天了,好舍不得这个老师。今天老师讲了算法结构。话不多说,直接上笔记。
review1
review2

数据结构~

数组 => 一组[类型相同]而且[存储空间连续]的数据 
=> 一组数据

数组最大的特点:[存储空间连续]

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 => &3

HashSet => 底层基于哈希表实现的无序 但是唯一的集合
======================
数组	=> ArrayList
链表	=> LinkedList
栈	=> Stack
队列	=> Queue
哈希表	=> HashSet
二叉树	=> TreeSet

James Gosling => Java之父 //下图.高司令
James Gosling

Joshua Bloch => Java之母 //下图.就是不老实
Joshua Bloch
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{
		HashSet<String> set = 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){
		HashSet<Integer> set = 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.*;//util
public class TestArrayList{
	public static void main(String[] args){
		ArrayList<Integer> list = new ArrayList<Integer>();
		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){
		LinkedList<String> list = new LinkedList<String>();
		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){
		Stack<String> stk = 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){
		TreeSet<String> set = 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){
		TreeSet<Integer> set = 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四大名著

Java编程语言(第三版)----James Gosling(Java之父)

Java编程思想(第4版)-----Bruce Eckel

JAVA 2核心技术 卷I:基础知识(原书第8版)----Cay Horstmann

JAVA 2核心技术 卷II:高级特性(原书第8版)----Cay Horstmann

Effective Java中文版--------Joshua Bloch

猜你喜欢

转载自blog.csdn.net/qq_41895253/article/details/81946135
今日推荐