object

java设计模式--迭代器模式

廉价感情. 提交于 2020-03-15 19:53:02
迭代器模式:提供一种方法顺序来访问一个聚合对象中的元素,并且不暴露该对象的内部表示。当我们需要去遍历一个对象时就可以考虑使用迭代器模式。 聚集抽象类 public interface Collection { Iterator createIterator(); } 具体聚集类。 public class ConcreteCollection implements Collection { private List<Object> list = new ArrayList<>(); @Override public Iterator createIterator() { return new ConcreteIterator(this); } //获取集合大小 public int count(){ return list.size(); } //添加元素 public void setList(Object object){ list.add(object); } //获取元素 public Object getList(int index){ return list.get(index); } } 迭代抽象类。 public interface Iterator { //第一个节点 Object first(); //下一个节点 Object next(); //是否遍历完成

DBUtils结果集处理器介绍

荒凉一梦 提交于 2020-03-15 16:05:14
  common-dbutils.jar是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能。 1、QueryRunner类 ①update方法: int update(String sql,Object...params) -->可执行增删改语句 int update(Connection con,String sql,Object...params)-->需要调用者提供Connection,这说明本方法不再管理Connection。支持事务。 ②query方法: T query(String sql,ResultSetHandler rsh,Object...params)-->可执行查询 它会先得到ResultSet,然后调用rsh的handle()把rs转换成需要的类型。 T query(Connection con,String sql,ResultSetHandler rsh,Object...params);支持事务。 2、ResultSetHandler接口: BeanHandler(单行)-->构造器需要一个Class类型参数,用来把一行结果转换成指定类型的javabean对象。 BeanListHandler(多行)-->构造器也是需要一个Class类型的参数

day-25面向对象

半腔热情 提交于 2020-03-15 11:41:33
继承的另一种使用方式 最常见的是直接继承一个已经存在的类 当你想要创建一个新的类 发现这个类中的一些 在某一个类中已经存在 那就没有必要从头开始写 ,可以直接继承已有的类 然后做补充 注意:当你覆盖了init方法时   不要忘记调用super().init函数让父类完成原有的初始化操作 class MyList(list): def __init__(self,element_cls): # 当你覆盖了init方法时 # 不要忘记调用super().init函数让父类完成原有的初始化操作 super().__init__() self.element_cls = element_cls def append(self, object): # if isinstance(object,str) if object.__class__ == self.element_cls: super().append(object) else: print("只能存储%s类型!" % self.element_cls.__name__) 多继承的问题 python支持多继承 一个类可以同时继承多个父类 好处:是更加灵活 问题:多继承时如果多个父类中出现了同名的属性/函数,属性的查找顺序该怎么确定 办法:需要使用mro列表来查看真正的继承顺序 最后:尽量不要使用多继承 class A: def

Object有哪些公用的方法?

空扰寡人 提交于 2020-03-15 09:03:32
Object是所有类的父类,任何类都默认继承Object。 public class Demo { public static void main(String[] args) { Object object = new Integer(1); Object object2 = new Integer(1); //final方法,获得运行时类型 Object classType = object.getClass(); //该方法用于哈希查找,重写了equals方法一般都要重写hashCode方法。 //这个方法在一些具有哈希功能的Collection中用到 int hashCode = object.hashCode(); //在Object中与==是一样的,子类一般需要重写该方法 System.out.println(object.equals(object2)); //唤醒在该对象上等待的某个线程 object.notify(); //唤醒在该对象上等待的所有线程 object.notifyAll(); //保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常 try { /* * 使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait()方法一直等待

Java 集合

ぐ巨炮叔叔 提交于 2020-03-14 08:20:20
所有集合类都位于java.util包下。集合中只能保存对象(保存对象的引用变量)。当我们把一个对象放入集合中后,系统会把所有集合元素都当成Object类的实例进行处理。 Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些接口或实现类。 Set和List接口是Collection接口派生的两个子接口,Queue是Java提供的队列实现,类似于List。 Map实现类用于保存具有映射关系的数据(key-value)。 Set、List和Map可以看做集合的三大类。 List集合是有序集合,集合中的元素可以重复,访问集合中的元素可以根据元素的索引来访问。 Set集合是无序集合,集合中的元素不可以重复,访问集合中的元素只能根据元素本身来访问(也是不能集合里元素不允许重复的原因)。 Map集合中保存Key-value对形式的元素,访问时只能根据每项元素的key来访问其value。 接口 实现 历史集合类 Set HashSet TreeSet List ArrayList Vector LinkedList Stack Map HashMap Hashtable TreeMap Properties Collection Collection接口支持如添加和除去等基本操作。设法除去一个元素时

java数据结构:堆栈

可紊 提交于 2020-03-14 05:43:45
堆栈的数据结构只允许数据从有序列表的一端做输入输出操作。 堆栈数据结构的特点是先进入的数据后处理,后进入的数据先处理,就比如子弹入弹匣一下,先压入弹匣的子弹后面发射出,后压入的子弹先发射。 下面是用数组模拟堆栈:ArrayOfStack.java package Stack; /** * @author zh * 数组实现堆栈 */ public class ArrayOfStack { private Object[] stack = null; private int size; private int top; //默认初始化一个栈堆,大小为100 public ArrayOfStack(){ this.size = 100; this.top = -1; this.stack = new Object[size]; } //初始化一个自定义大小的栈堆 public ArrayOfStack(int size){ this.size = size; this.top = -1; this.stack = new Object[size]; } //判断堆栈是否为空 public boolean isEmpty(){ if(top == -1){ return true; }else return false; } //判断栈堆是否已满 public boolean

Python基础第十六天:面向对象进阶

怎甘沉沦 提交于 2020-03-13 11:32:29
目录   isinstance 和 issubclass   反射     setattr     delattr     getattr     hasattr   __str__ 和 __repr__   __del__   item系类     __getiem__     __setitem__     __delitem__   __new__   __call__   __len__   __hash__   __eq__   isinstance 和 issubclass    isinstance(obj,cls) 检查是否 obj 是否是类 cls 对象 class Foo(object): pass obj = Foo() print(isinstance(obj,Foo)) #True   issubclass(sub,super) 检查sub类是否是supper类的派生类 class Foo(object): pass class Bar(Foo): pass print(issubclass(Bar,Foo)) #True   反射   1、什么是反射    反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检查和修改它本身状态或行为的一种能力(自省),这一概念的提出很快引发了计算机科学领域关于应用反射性的研究

Object类

断了今生、忘了曾经 提交于 2020-03-13 07:57:20
Object类 Object类是所有类、数组的父类。 任何Java的普通类都是Object的子类,都可以调用Object类的方法: boolean equals(Object obj) 判断指定对象与该对象的地址是否相等 protected void finalize() 当系统变量没有引用到该对象时,垃圾回收器调用此方法来清理该对象的资源 Class<> getClass() 返回该对象的运行时类 int hashCode() 返回该对象的hashCode值,默认情况下和System类的identityHashCode(Object x)方法计算出的结果相同。 String toString() 返回该对象的字符串表示,当对象在被System.out.println()输出,或者把对象和某个字符串拼接时,系统会自动调用该方法。该方法默认返回“运行时类名@十六进制的hashCode值”格式的字符串 wait() notify() notifyAll() protected Object clone() “自我克隆”得到一个当前对象的副本,并把二者完全隔离。 “克隆”的步骤: 实现Cloneable接口。(这是一个标志性的接口,实现该接口的对象可以实现“自我克隆”,接口里没有定义任何方法) 实现自己的clone()方法。(实现clone()方法时通过super.clone())

python isinstance 函数

自作多情 提交于 2020-03-13 05:38:00
isinstance是Python中的一个内建函数 语法: isinstance(object, classinfo) 如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例, 返回True。如果object不是一个给定类型的的对象, 则返回结果总是False。 如果classinfo不表示一个类(类型对象), 那么它要么是一个类的元组, 或者递归地包含这样的(由数据类型构成的)元组.其他的序列类型是不被允许的。 如果classinfo不是一种数据类型或者由数据类型构成的元组,将引发一个TypeError异常。 举例: >>> isinstance(10, int) True >>> isinstance(1.0, float) True >>>isinstance(arg,dict) 判断对象a是否为字典,如果为真,会打印True,如为假,打印False。 #写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。 def obj_len(arg): if isinstance(arg,str) or isinstance(arg,list) or isinstance(arg,tuple): if len(arg) > 5: return True else: return False return None temp =

HashCode与Equals回顾

折月煮酒 提交于 2020-03-13 00:53:47
HashSet和HashMap一直都是JDK中最常用的两个类, HashSet要求不能存储相同的对象,HashMap要求不能存储相同的键 。 那么Java运行时环境是如何判断HashSet中相同对象、HashMap中相同键的呢?当存储了“相同的东西”之后Java运行时环境又将如何来维护呢? 在研究这个问题之前,首先说明一下JDK对equals(Object obj)和hashcode()这两个方法的定义和规范: (1) 在Java中任何一个对象都具备equals(Object obj)和hashcode()这两个方法 ,因为他们是在Object类中定义的。 equals(Object obj)方法用来判断两个对象是否“相同”,如果“相同”则返回true,否则返回false。 hashcode()方法返回一个int数,在Object类中的默认实现是“将该对象的内部地址转换成一个整数返回”。 (2)接下来有两个个关于这两个方法的重要规范(我只是抽取了最重要的两个,其实不止两个): 规范1 : 若重写equals(Object obj)方法,有必要重写hashcode()方法(避免不必要的麻烦) ,确保通过equals(Object obj)方法判断结果为true的两个对象具备相等的hashcode()返回值。说得简单点就是:“如果两个对象相同,那么他们的hashcode应该 相等”