Java
tuke_tuke
这个作者很懒,什么都没留下…
展开
-
Android踩坑日记:监听软键盘多次调用和刷新系统相册和获取所有相片
EditText设置监听软键盘删除键(或enter)一般使用方法edittext.setOnKeyListener(new View.OnKeyListener(){ @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE原创 2017-10-13 10:43:35 · 806 阅读 · 0 评论 -
Eclipse和MyEclipse自动提示设置
打开 Eclipse -> Window -> Perferences -> Java -> Editor -> Content Assist,在右边最下面一栏找到 auto-Activation ,下面有三个选项,找到第二个“Auto activation triggers for Java:”选项在其后的文本框中会看到一个“.”存在。这表示:只有输入“.”之后才会有代码提示和自动补原创 2016-04-21 17:18:42 · 514 阅读 · 0 评论 -
Map的4种遍历方法
一,使用map.entrySet(),得到的是一个Entry的Set集合Set>那么对于Set集合就有两种遍历方式;1,使用迭代器Iterator> iterator = map.entrySet().iterator();while (iterator.hasNext()) { Map.Entry entry = iterator.next(); entry.getKey(原创 2016-04-20 21:25:25 · 958 阅读 · 0 评论 -
Java华容道
MainClass.javapublic class MainClass { public static void main(String args[]) { new Hua_Rong_Road(); }}Person.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*;pub原创 2016-02-25 16:18:48 · 5298 阅读 · 1 评论 -
数据结构之排序算法(四)-归并排序
归并算法排序的思想:把原始数组分成若干子数组,对每一个子数组进行排序,继续把子数组与子数组合并,合并后仍然有序,直到全部合并完,形成有序的数组。总结一句话就是:将数组不断的分成两半,直到每个子数组只包含一个元素,然后将这些小的子数组归并为稍大的有序子数组,直到最后形成一个有序的数组。算法图解是:MergeSort.javapublic class MergeSort {//原创 2015-12-25 15:38:13 · 1613 阅读 · 1 评论 -
数据结构值排序算法(三)-快速排序
基本思想:快速排序采用的思想是分治思想。第一趟排序:快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归排序:第二步就是对高段位和地段为两部分进行递归排序。一趟快速排序的算法的步骤是:1)设置两个变量low、high,排原创 2015-12-23 11:17:37 · 8212 阅读 · 1 评论 -
数据结构之排序算法(二)-冒泡排序及改进
冒泡排序算法需要遍历几次数组。每次遍历都要比较连续相邻的元素,如果某一对相邻元素是降序,则互换它们的值,否则,保持不变。由于较小的值像“气泡”一样逐渐浮想顶部,而较大的值沉向底部,所以叫冒泡排序。冒泡排序的图解是:总结一句话就是:连续比较相邻的元素,降序则呼唤。有n个数,共需要比较n-1趟,第i趟,需要比较n-i次。BubbleSort.javapublic class B原创 2015-12-21 15:10:06 · 4603 阅读 · 0 评论 -
数据结构之排序算法(一)-堆排序
继上篇文章讲到堆的实现之后http://blog.csdn.net/tuke_tuke/article/details/50357939,下面可以使用堆来实现堆排序。在堆的基础上实现堆排序的思路很简单:(这里使用最小堆,当然最大堆也可以) 最小堆MinHeap就是最小的数在堆的根元素的位置。首先把一组数建堆,然后再不断的移除堆的根元素,由于每次移除的根元素都是现有堆的最小元素,故可得到原创 2015-12-21 14:03:59 · 1652 阅读 · 0 评论 -
数据结构-二叉树和二叉查找树
先按树-二叉树-二叉查找树的顺序解释会比较清楚。一,树树(Tree)是n(n≥0)个结点的有限集。在任意一棵非空树中:(1)有且仅有一个特定的被称为根(Root)的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。结点的度(Degree):结点拥有的子树数称为结点的度(De原创 2015-12-20 17:44:30 · 6803 阅读 · 0 评论 -
数据结构-堆实现优先队列(java)
队列的特点是先进先出。通常都把队列比喻成排队买东西,大家都很守秩序,先排队的人就先买东西。但是优先队列有所不同,它不遵循先进先出的规则,而是根据队列中元素的优先权,优先权最大的先被取出。这就很像堆的特征:总是移除优先级最高的根节点。重点:优先级队列,是要看优先级的,谁的优先级更高,谁就先得到权限。不分排队的顺序!上篇文章解释了堆的概念实现,现在用堆实现优先队列://最大原创 2015-12-19 15:56:20 · 5620 阅读 · 1 评论 -
数据结构-堆的实现
堆本质是一棵二叉树,其中所有的元素都可以按全序语义进行比较。用 堆来进行存储需要符合以下规则:1.元素可比较性:数据集中的元素可以进行比较,就是要实现Comparable接口;。2.节点最大/最小性:每个节点的元素必须大于或小于该节点的孩子节点的元素;3.堆是一棵完全二叉树。堆有两种:最大堆和最小堆。最小堆中每个节点的优先级小于或者等于它的子节点;最大堆则相反,每个节点原创 2015-12-19 14:13:39 · 9278 阅读 · 1 评论 -
数据结构-队列
栈是“后进先出”(LIFO,Last InFirst Out)的数据结构,与之相反,队列是“先进先出”(FIFO,First InFirst Out)的数据结构。队列特性:下面我们使用数组作为底层容器来实现一个队列的操作封装,与栈不同的是,队列的数据项并不都是从数组的第一个下标开始,因为数据项在数组的下标越小代表其在队列中的排列越靠前,移除数据项只能从队头移除,然后队头指针后移。原创 2015-12-17 16:34:54 · 1068 阅读 · 0 评论 -
数据结构-栈
栈只允许访问一个数据项:即最后插入的数据。移除这个数据项后才能访问倒数第二个插入的数据项。它是一种“后进先出”的数据结构。栈最基本的操作是出栈(Pop)、入栈(Push),还有其他扩展操作,如查看栈顶元素,判断栈是否为空、是否已满,读取栈的大小等实现栈的方法有两种:1,栈的ArrayList实现,底层是数组import java.util.ArrayLi原创 2015-12-15 11:23:44 · 801 阅读 · 0 评论 -
数据结构-冒泡排序
public class BubbleSort {//时间复杂度O(n^2) //冒泡排序 public static void bubbleSort(int[] list){ int n=list.length; for(int i=1;i<n;i++){//总共比较n-1趟 for(int j=0;j<n-i;j++){//第i趟比较n-i次 if(list[j]>l原创 2015-12-13 11:27:40 · 639 阅读 · 0 评论 -
MVC程序设计思想
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,M是指业务模型,V是指用户界面,C是指控制器,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC是软件开发过程中比较流行的设计思想。应该明确一点原创 2015-09-07 21:12:26 · 2249 阅读 · 0 评论 -
Scanner的next,nextint和nextLine的使用总结
问题所在:java中Scanner类中nextLine()方法与next()或nextInt()联用时可能出现一个常见的错误,那就是当next()或者nextInt(),nextDouble() 、 nextFloat()用在nextLine的前面时。nextLine会把前者的结束符“换行符”作为字符串读入,进而不需要从键盘输入字符串nextLine已经转向下一条语句执行 public c原创 2016-05-06 12:00:08 · 11952 阅读 · 0 评论 -
Java二叉树的递归,非递归遍历,高度,节点数,叶子节点数
import java.util.LinkedList;import java.util.Queue;import java.util.Stack;public class Main { public static class TreeNode{ T data; TreeNode left=null; TreeNode right=null原创 2016-05-17 19:37:04 · 6281 阅读 · 1 评论 -
Android的Gson的使用方法,实现Json结构间相互转换
一,把数组,对象,List,Map等数据结构转换成Json字符串import java.lang.reflect.Type;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import com.g原创 2016-05-31 10:16:59 · 7722 阅读 · 0 评论 -
Android踩坑日记:点击变暗效果的ImageView实现原理
很多时候我们使用ImagView显示图片,无论是Gilde,Fresco等图片显示框架,比如设置中心更换头像,网格相册点击预览,选择等情况,会遇到点击变暗的交互需求。源码分析 我们想的办法是自定义一个ImageView,当点击图片时,是不是有回调方法来同时改变图片的滤镜或者蒙版等。 特意去看了View.java的源码(ImageView继承View),想看看View被点击之后是是原创 2017-10-21 10:00:57 · 1752 阅读 · 1 评论 -
Android踩坑日记:android7.0动态相机权限
前提:项目中使用的动态权限开源库github:https://github.com/yanzhenjie/AndPermission。转载必须注明本文转自严振杰的博客:http://blog.csdn.net/yanzhenjie1003添加依赖:compile 'com.yanzhenjie:permission:1.0.3'Android6.0:众所周知,And原创 2017-12-22 12:31:12 · 24760 阅读 · 5 评论 -
什么时候用抽象?什么时候用接口?
对于抽象类以及接口的概念,大家都容易把这两者搞混,其实我也一样,在听李建忠老师的设计模式时,他也老把抽象类说成接口,弄的我就更糊涂了,所以找了些网上的资料。抽象类是从一系列相关对象中抽象出来的概念, 因此反映的是事物的内部共性;接口是为了满足外部调用而定义的一个功能约定, 因此反映的是事物的外部特性分析对象,提炼内部共性形成抽象类,用以表示对象本质,即“是什么”为外部提供调用或功能原创 2017-06-15 10:23:16 · 3059 阅读 · 1 评论 -
海量数据处理-Trie树
http://blog.csdn.net/beiyeqingteng/article/details/6981263http://blog.csdn.net/zmazon/article/details/8227610#关注Trie 这种结构已经很久,Trie有一个很有趣的用途,那就是自动提示。而且,前不久在一次面试里,也需要用Trie来解答。所以,在此对这个数据结构进行总结。转载 2016-09-23 11:00:44 · 1138 阅读 · 0 评论 -
寻找数组中最小的k个数(快排和堆排)
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路1:利用快排的思想,寻找第k个位置上正确的数,k位置前面的数即是比k位置小的数组,k后面的数即是比k位置元素大的数组public ArrayList GetLeastNumbers_Solution(int [] input, int k)原创 2016-09-19 18:48:11 · 683 阅读 · 0 评论 -
报数字游戏
题目:17个人围成一个圈,编号为1-17,从第一号开始报数,报到3的倍数的人离开,一直数下去直到最后剩下一个人,此人的编号是多少,请编程输出结果。import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * * @author agrimony * */public原创 2016-09-19 18:26:42 · 1612 阅读 · 0 评论 -
Java的Executor框架和线程池实现原理
一,Java的Executor框架1,Executor接口public interface Executor { void execute(Runnable command); }Executor接口是Executor框架中最基础的部分,定义了一个用于执行Runnable的execute方法,它没有实现类只有另一个重要的子接口ExecutorService2,Exe原创 2016-05-09 17:22:50 · 23496 阅读 · 4 评论 -
Java数据库连接池实现原理
一般来说,Java应用程序访问数据库的过程是: ①装载数据库驱动程序; ②通过jdbc建立数据库连接; ③访问数据库,执行sql语句; ④断开数据库连接。public class DBConnection { private Connection con; //定义数据库连接类对象 private PreparedStatement pstm; pr原创 2016-05-29 16:33:02 · 32500 阅读 · 11 评论 -
Java中HashMap底层实现原理(JDK1.8)源码分析
这几天学习了HashMap的底层实现,但是发现好几个版本的,代码不一,而且看了Android包的HashMap和JDK中的HashMap的也不是一样,原来他们没有指定JDK版本,很多文章都是旧版本JDK1.6.JDK1.7的。现在我来分析一哈最新的JDK1.8的HashMap及性能优化。在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值原创 2016-06-05 11:13:44 · 147832 阅读 · 47 评论 -
HTTPS和HTTP的区别
什么是 HTTPS?HTTPS (基于安全套接字层的超文本传输协议 或者是 HTTP over SSL) 是一个 Netscape 开发的 Web 协议。你也可以说:HTTPS = HTTP + SSLHTTPS 在 HTTP 应用层的基础上使用安全套接字层作为子层。为什么需要 HTTPS ?超文本传输协议 (HTTP) 是一个用来通过互联网传输和接收信息的转载 2016-08-26 20:28:44 · 658 阅读 · 0 评论 -
Java集合中HashSet的实现原理
1.HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。HashSet中不允许有重复元素,这是因为HashSet是基于HashMap实现的,HashSet中的元素都存放在HashMap的key上面,而value中的值都是统一的一个private static原创 2016-08-27 10:36:11 · 1028 阅读 · 0 评论 -
动态规划思想
原文:http://blog.csdn.net/u013445530/article/details/45645307#什么是动态规划 ?动态规划( D ynamic P rogramming ,所以我们简称动态规划为 DP )是 运筹学 的一个分支,是求解决策过程(decision process) 最优化的数学方法。 20 世纪 50 年代初 美国 数学家R.E.Bellman 等人在原创 2016-07-04 19:04:03 · 1746 阅读 · 0 评论 -
Java类型后面的3个点的含义
class Father{ public void foo(String... s) { System.out.println("Father:foo"); }public void bar(String s) { System.out.println("Father:bar"); }}class Son extends Father{public原创 2016-05-23 17:33:22 · 3276 阅读 · 0 评论 -
查看源代码Source not found及在eclipse中配置jdk的src.zip源代码
在使用Eclipse进行java编程时,有时我们需要查看一些类的源代码,这时ctrl+鼠标左键是个很常用的操作,但有时我们发现这个操作实现不了,经常显示Source not found。如果有这个问题的话当然就是没有源代码的问题了,首先要下载对应JDK版本(我的是JDK1.7)的src.ziphttp://pan.baidu.com/s/1i47VOOH下载好后,复制到JDK的安装路径中:原创 2016-05-31 13:48:05 · 11342 阅读 · 3 评论 -
数组线性表ArrayList的内部实现
线性表是按顺序存储数据是常用的一种数据结构。大多数线性表的典型操作是:1,初始化线性表2,判断表是否为空3,求线性表的长度4,读取线性表中的第i个元素5,查找满足条件的数据元素6,在线性表的第i个位置之前插入一个新的数据元素7,删除线性表中的第i个数据元素8,表置空9,查找第i个元素的前驱或后继10,按一个或多个数据项递增或递减重新排列数据元素数组线性表原创 2015-09-05 11:19:14 · 1074 阅读 · 0 评论 -
java时钟面板clock
时钟面板程序可以直接用了//ClockPanel.javaimport static java.util.Calendar.HOUR;import static java.util.Calendar.MILLISECOND;import static java.util.Calendar.MINUTE;import static java.util.Calendar.SECOND;impor原创 2015-09-09 20:12:34 · 3247 阅读 · 0 评论 -
Java上转型对象
如果A类是B类的子类,当用子类创建一个对象,并把这个对象的引用放到父类的对象中,如: A a; a=new B(); 称对象a是对象b的上转型对象。 我总结的简单的一句话就是:子类对象的引用交给父类对象,可调用子类继承或重写的方法。性质: 1,上转型对象会失掉原对象的一些属性和功能(方法),就是说上转型对象不能操作子类新增的成员变量和方法。 2,但是上转型对象可以访问被子类继承或隐藏的成原创 2015-07-18 14:56:31 · 798 阅读 · 1 评论 -
Java子类继承(二):隐藏成员变量和方法重写的理解
1,上篇说子类可以继承父类的成员变量,作为自己的成员变量,在Java中子类也可以隐藏由父类继承来的成员变量,只要子类中声明的成员变量和父类的成员变量同名,就可以将其隐藏。 需要的注意是:子类对象可以调用从父类继承的方法操作隐藏的成员变量。class People { public double xx; public void setXX(double x) { xx=原创 2015-07-18 14:10:42 · 15497 阅读 · 0 评论 -
super关键字和final关键字
子类可以隐藏从父类继承的成员变量和方法,如果在子类中想使用被子类隐藏的成员变量,就可以使用关键字super了。 1,super调用父类的构造方法.子类是不能继承父类的构造方法的,有时候,想使用父类的构造方法,必须在子类的构造方法中使用关键字super,把子类的参数值传递给父类。super必须在子类构造函数中第一句public class StudentA extends Student {原创 2015-07-18 14:31:23 · 1438 阅读 · 0 评论 -
abstract类和接口interface的联系和区别
一,用关键字abstract类修饰的类称为abstract类(抽象类)。 abstract class A{ …………. } 特点: 1. 抽象类中可以有抽象方法和非抽象方法,但是抽象方法只允许声明不允许实现,而且不允许使用final和abstract同时修饰一个方法。 abstract class A{ abstract int min (int x,int原创 2015-07-18 15:55:09 · 952 阅读 · 0 评论 -
Java的TreeMap统计单词数量
使用TreeMap统计单词个数,并输出单词和书目,单词按升序排列 TreeMap的特点是无重复元素,且元素的key值既可以按默认的Comparable接口排序也可以按Comparator比较器排序,为TreeMap设计一个比较器,此比较器要实现Comparator接口//可以扩展到从文件中或者从控制台输入单词,来统计,只需要加入流就行了import java.util.Map;import j原创 2015-08-10 14:17:12 · 2714 阅读 · 0 评论 -
java.io,PrintWriter可以用来创建一个文件并向本文文件写入数据
java.io,PrintWriter可以用来创建一个文件并向本文文件写入数据PrintWriter(String filename);PrintWriter(File file);<!--创建一个向指定文件的新的PrintWriter-->PrintWriter(OutoutStream out);PrintWriter(OutoutStream out,Boolean antoflush)原创 2015-07-29 09:36:41 · 12959 阅读 · 0 评论