public static boolean cheakRepeat(int[] array){ HashSet<Integer> hashSet = new HashSet<Integer>(); for (int i = 0; i < array.length; i++) { hashSet.add(array[i]); } if (hashSet.size() == array.length){ return true; }else { return false; } }…
function isRepeat(arr) { var hash = {}; for(var i in arr) { if(hash[arr[i]]) return true; hash[arr[i]] = true; } return false; } var a = [1,2,34,5,1] console.log(isRepeat(a))…
问题如下:在java 中 字符串为null 如何判断String str;if(str==null) ??str.equal("null") ?? 答:我觉得应该搞清楚字符串对象和字符串变量这两个概念的区别.字符串变量保存一个字符串对象的引用.判断字符串是否空涉及两个层次:1.是首先判断字符串变量的引用是否为空,即空对象的概念,用null来判断,可以用== null:(注意不能用equals(null),在参数为null情况下,返回值永远是false):2.是在不为空对象的情况下,在判…
java中面向对象的三大特性:封装.继承.多态 封装 把抽象的数据和对数据的操作封装在一起,隐藏变量的实现细节.数据被保护在内部,程序的其他部分只有通过被授权的操作(成员方法)才能对数据进行访问. 1.原则 将不需要对外提供的内容都隐藏起来 把属性都隐藏,提供公共方法对其访问 2.好处 将变化隔离 便于使用 提高重用性 提高安全性 class FengZhuang{ private int age = 15; public void setAge(int age) { if (age > 0)…
Java中Set集合是如何实现添加元素保证不重复的? Set集合是一个无序的不可以重复的集合.今天来看一下为什么不可以重复. Set是一个接口,最常用的实现类就是HashSet,今天我们就拿HashSet为例. 先简单介绍一下HashSet类 HashSet类实现了Set接口, 其底层其实是包装了一个HashMap去实现的.HashSet采用HashCode算法来存取集合中的元素,因此具有比较好的读取和查找性能. 先看下HashSet的几个构造方法. // 默认构造函数 底层创建一个HashMa…
方式一(实体类): //java中遍历实体类,获取属性名和属性值 public static void testReflect(Object model) throws Exception{ for (Field field : model.getClass().getDeclaredFields()) { field.setAccessible(true); System.out.println(field.getName() + ":" + field.get(model) );…
科普: 值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数. 引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数. 值传递 引用传递 根本区别 会创建副本(Copy) 不创建副本,直接引用 效果 函数中无法改变原始对象 函数中可以改变原始对象 Java 中的实参与形参之间的传递到底是值传递还是引用传递呢? 其实之前我和…
继承的特点:继承父类的属性和方法.单继承(多层继承)c++里的继承是多继承 特性 :方法的复写(重写) java中的继承和OC中一样. 比如:人可以养狗; 人---->狗 :整体和部分(拥有)关系. 球队---->球员 :整体和部分的关系. 代码中是最常见 has a 的关系 人 ---->学生 :学生是人  : 说明有一个继承关系存在 , 关系到底是否表现出来,有具体的情况来决定. 如何判断两个事物之间是否存在一个继承关系: is a  谁是谁是否成立.成立就有继承关系. A:B :…
java中判断字符串是否相等有两种方法:1.用"=="运算符,该运算符表示指向字符串的引用是否相同,比如: String a="abc";String b="abc":那么a==b将返回true.这是因为在java中字符串的值是不可改变的,相同的字符串在内存中只会存一份,所以a和b指向的是同一个对象:再比如:String a=new String("abc"); String b=new String("abc&qu…
int [][]a = new int [5][2]; //定义一个二维数组,其中所包含的一维数组具有两个元素 对于一个已定义的二位数组a经行如下规则排序,首先按照每一个对应的一维数组第一个元素进行升序排序(即a[][0]),若第一个元素相等,则按照第二个元素进行升序排序(a[][1]).(特别注意,这里的a[][0]或者a[][1]在java中是不能这么定义的,这里只是想说明是对于某一个一维数组的第0或1个元素进行排序) Arrays.sort(a, new Comparator<int[]>…
1:判断字符串中是否包含某个字符(字符串): startsWith(): 这个方法有两个变体并测试如果一个字符串开头的指定索引指定的前缀或在默认情况下从字符串开始位置 此方法定义的语法如下: public boolean startsWith(String prefix, int toffset) or public boolean startsWith(String prefix) prefix – 要匹配的前缀.这里是参数的细节: toffset – 从哪里开始寻找字符串. 返回值为true…
在java的集合中,判断两个对象是否相等的规则是: 1).判断两个对象的hashCode是否相等 .      如果不相等,认为两个对象也不相等,完毕       如果相等,转入2)(这一点只是为了提高存储效率而要求的,其实理论上没有也可以,但如果没有,实际使用时效率会大大降低,所以我们这里将其做为必需的.后面会重点讲到这个问题.) 2).判断两个对象用equals运算是否相等 .      如果不相等,认为两个对象也不相等       如果相等,认为两个对象相等(equals()是判断两个对象…
主要思想: 数组可以无序 假设数字里的值都为正 循环判断数组 如果与前面的数字相同则变为-1 然后记录-1的个数算出重复值 然后重新new一个减去重复值长度的新数组 和原数组判断 不为-1的全部复制进来即可 代码如下: package Del_Same_Num; public class Del_Same_Num { static int count=0; //计算重复值 public static int count_same_number(int[] a) { for(int i=0;i<a…
public class Demo { /** * 去掉重复值 */ public static void main(String[] args) { String test = "100,120,166,1555,120,150,100"; String[] test1 = test.split(","); ArrayList list = new ArrayList(); for (int i = 0; i < test1.length; i++) { i…
[HashSet] 1. HashSet存储不能够存储相同的元素,元素是否相同的判断:重写元素的equals方法.equals方法和hashCode方法必须兼容,如:equals方法判断的是用户的名字name,那么hashCode的返回的hashcode必须是name.hashcode(): 2. HashSet存储是无序的,保存的顺序与添加的顺序是不一致的,它不是线性结构,而是散列结构,(通过散列表:散列单元指向链表).因此,HashSet的查询效率相对比较高. 3. HashSet不是线程安…
一.字符串 1.比较 String.HashSet.List 中的 contains 方法 其中, String.List 都使用了 indexOf 方法,本质是遍历,时间效率为 O(n).而 HashSet 使用了计算 hash值的方式,时间效率为 O(1) 级别. 2.String 中为什么需要 hashCode 方法? 从String 源码可以看到其底层实现是 char[],即本质是字符数组.包括索引(indexOf)及大部分功能(比如 equals 方法)实现都是使用数组. public…
1:Set集合(理解) (1)Set集合的特点 无序,唯一 (2)HashSet集合(掌握) A:底层数据结构是哈希表(是一个元素为链表的数组) B:哈希表底层依赖两个方法:hashCode()和equals() 执行顺序: 首先比较哈希值是否相同 相同:继续执行equals()方法 返回true:元素重复了,不添加 返回false:直接把元素添加到集合 不同:就直接把元素添加到集合 C:如何保证元素唯一性的呢? 由hashCode()和equals()保证的 D:开发的时候,代码非常的简单,自…
题目:输入一串字符,由(){}[]组成,判断是否所有的括号都是闭括号,是的返回TRUE,不是返回FALSE. /*输入字符串,拆解为字符数组 * 用函数s.charAt(i)来完成 * * */import java.util.*;//import java.lang.*;public class Char { public static void main(String[] args){ String a=new String(); Scanner in=new Scanner(System.…
一.多态:一个对象具有多种表现形态(父类的引用类型变量指向了子类的对象) 二.多态的满足条件:1.必须要有继承关系2.必须要有方法的重写 三.int[]a; //a引用类型变量-->//引用in类型数组的变量 四.引用类型的变量:数组,字符串,对象 Animal 类,Dog,Fish Animal a = new Dog [Fish];//多态的表现形式 五.多态的使用注意点: 1.多态情况下:子父类存在同名的成员变量,默认是访问的父类中的成员变量 2.多态的情况下:子父类存在同名的非静态方法,…
一.集合(Collections) Java使用集合来组织和管理对象. 1.Java的集合类 集合类主要负责保存.盛装和管理对象,因此集合类也被称为容器类. 集合类分为Set.List.Map和Queue四大体系. Set 代表无序.不可重复集合: List 代表有序.可重复集合: Map 代表具有映射关系元素的集合: Queue 代表队列,实现元素的先进先出管理. 数组也是一种集合类,它是能随机存储和访问引用序列的诸多方法中最高效的一种,当追求高效的数据访问时,数组是很不错的选择. 2.集合与…
switch关键字对于多数java学习者来说并不陌生,由于笔试和面试经常会问到它的用法,这里做了一个简单的总结: 能用于switch判断的类型有:byte.short.int.char(JDK1.6),还有枚举类型,但是在JDK1.7后添加了对String类型的判断 case语句中少写了break,编译不会报错,但是会一直执行之后所有case条件下的语句而不再判断,直到default语句 若果没有符合条件的case就执行default下的代码块,default并不是必须的,也可以不写 1 pac…
一.多态性的概念 多态性是以继承为基础上的,举个例子,人属于动物,狗也属于动物,所以动物就是父类,而人和狗都是动物的子类,都属于动物. 二.多态的使用 (1)多态一般用于方法参数或者方法返回值,特别当一个方法中功能是人和狗共有的,这时候利用多态性,将参数设为父类,就可以少写一个方法,而且对于代码来说也比较容易拓展.下面举个例子: class Animal{ public void skill(){ System.out.println("动物拥有属于自己的技巧..."); } } cl…
内存概述 内存是计算机中的重要原件,临时存储区域,作用是运行程序.我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存   Java虚拟机要运行程序,必须要对内存进行空间的分配和管理 Java虚拟机的内存划分 ~为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式   JVM的内存划分: 一个数组内存图 public static void main(String[] args) { int[] a…
hashset中的元素 treeset中的元素要实现comparable接口…
String不为空判断 if(null != str && !"".equals(str)) List不为空判断 if(list!=null && !list.isEmpty()) 对象判断不为空 if(null!=user) 对象属性判断为空 if(null==user.getName()||"".equals(user.getName()) 下面这个也可以判断list是否为空 public static boolean isNul…
  public static Object[] List2Array(List<Object> oList) { Object[] oArray = oList.toArray(new Object[] {}); // TODO 需要在用到的时候另外写方法,不支持泛型的Array. return oArray; } public static Object[] Set2Array(Set<Object> oSet) { Object[] oArray = oSet.toArray…
很多人在编程时,总是喜欢用一下方法将数组转为字符串:(a为byte数组) String s=a.toString(); 可是每次返回的时候,新手看来返回的结果是乱码,比如说我,写RSA算法时,没有注意,就以为是解密出来的乱码(哈哈哈),但其实[B@1b6d3586 为@+hash值,这个时候要知道对于返回一个String对象,new一个是基本上不会错的,测试代码如下: Scanner scan=new Scanner(System.in); String s="ghhhh"; byte…
普通的赋值是:int[][] i = {{1,2,3},{2,3,4},{1,3,4}}; 如果是其他情况可以这样:比如: import java.util.* public class TT(){ public static void main(String[] args){ int m=0; for(int i=0 ;i<5;i++){ for(int j=0;j<5;j++) a[i][j]=m; m++; } } } 这是一个给二维数组赋值的例子 把0到25赋值给数组a.…
HashSet 的内部采用 HashMap 来实现.由于 Map 需要 key 和 value,所以 所有 key 的都有一个默认 value.类似于 HashMap,HashSet 不允许重复的 key,只允许有一个 null key,意思就是 HashSet 中只允许存储一个 null 对象.…
一.初始化String的两种方式 String str1 = "hello"; String str2 = new String("hello"); 第一种方式本质上是声明了一个String的匿名对象,然后str1指向该对象.该匿名对象保存在对象池中. 第二种方式分为两步: 1) 声明一个"hello"的String对象 2) new 关键字申请新的内存,将该内存分配String对象,并将值"hello"分配给该对象.步骤1中…