《Thinking in Java》学习笔记(四)

1.Java中的闭包与回调

  通过内部类提供闭包的功能是优良的解决方案,比指针更为灵活、安全。

  回调的价值在于它的灵活性—它可以动态地决定需要调用什么方法,在Swing中,回调被大量使用。

2.容器类

  Java容器类的用途是用来保存对象,可以分为以下的两个大类:

  1>Collection,一个用于存储对象的序列。又可以具体的分为List,Set和Queue。

  2>Map,一个以键值对来存储对象的序列。

  Arrays和Collections类中提供了很多实用的静态方法。 

  1.创建一个空的collection,向collection中添加元素或者集合,这种添加的方式效率是比较高的

  public boolean addAll(Collection<? extends E> coll)

List<String> c = new ArrayList<String>();Collection col = new ArrayList();
Collections.addAll(col, 1,2,3,c);

  2.根据元素自然顺序 对指定列表按升序排序。此方法内部调用了Comparable 的compareTo()方法。

   public static <T extends Comparable<? super T>> void sort(List<T> list)

时间: 2024-10-07 13:04:18

《Thinking in Java》学习笔记(四)的相关文章

python cookbook第三版学习笔记四:文本以及字符串令牌解析

文本处理: 假设你存在一个目录,下面存在各种形式的文件,有txt,csv等等.如果你只想找到其中一种或多种格式的文件并打开该如何办呢.首先肯定是要找到满足条件的文件,然后进行路径合并在一一打开. path=r'D:\test_source' filenames=os.listdir(path) print filenames ret=[name for name in filenames if name.endswith('.txt')] print ret direct_path=[os.pa

python cookbook第三版学习笔记十二:类和对象(三)创建新的类或实例属性

先介绍几个类中的应用__getattr__,__setattr__,__get__,__set__,__getattribute__,. __getattr__:当在类中找不到attribute的时候,会调用__getattr__,并执行其中的自定义代码.所有在类中定义的属性都包含在__dict__中,也就是说如果在__dict__中找不到对应的属性名,则__getattr__被触发. class get_try(object):     def __init__(self,value):   

python cookbook第三版学习笔记十三:类和对象(三)描述器

__get__以及__set__:假设T是一个类,t是他的实例,d是它的一个描述器属性.读取属性的时候T.d返回的是d.__get__(None,T),t.d返回的是d.__get__(t,T).说法比较绕,我们来看一个实例: class Descriptor(object):     def __get__(self, instance, owner):         return 'get',self,instance,owner class T(object):     d=Descri

python cookbook第三版学习笔记六:迭代器与生成器

假如我们有一个列表 items=[1,2,3].我们要遍历这个列表我们会用下面的方式 For i in items:   Print i 首先介绍几个概念:容器,可迭代对象,迭代器 容器是一种存储数据的数据结构,容器将所有数据保存在内存中,典型的容器有列表,集合,字典,字符数组等.如items就是一个列表容器.   可迭代对象:这个对象是否可迭代.如items也是一个可迭代对象.简单来说如果可以用for循环的对象都称为可迭代对象.如果要判断是否是一个可迭代的对象.可以用print isinsta

python cookbook第三版学习笔记七:python解析csv,json,xml文件

CSV文件读取: Csv文件格式如下:分别有2行三列. 访问代码如下: f=open(r'E:\py_prj\test.csv','rb') f_csv=csv.reader(f) for f in f_csv:     print f 在这里f是一个元组,为了访问某个字段,需要用索引来访问对应的值,如f[0]访问的是first,f[1]访问的是second,f[2]访问的是third. 用列索引的方式很难记住.一不留神就会搞错.可以考虑用对元组命名的方式 这里介绍namedtuple的方法.

python cookbook第三版学习笔记二:字典

一般来说字典中是一个键对应一个单值的映射,如果想一个键值映射多个值,那么就需要将这些值放到另外的容器中,比如列表或者集合. 比如d={'a':[1,2]} Collections中的defaultdict模块会自动创建这样的字典.如下 d=defaultdict(list) d['a'].append(1) d['a'].append(2) d['b'].append(3) defaultdict(<type 'list'>, {'a': [1, 2], 'b': [3]}) 下面再来看下字典

python cookbook第三版学习笔记十一:类和对象(二)调用父类的方法

在子类中调用父类的方法,可以下面的A.spam(self)的方法. class A(object):     def spam(self):         print 'A.spam' class B(A):     def spam(self):         print 'B.spam'         A.spam(self) if __name__=='__main__':     b=B()     b.spam() 但是上面的代码有一个问题,如果B的父类变更了,而且有很多子类的父

python cookbook第三版学习笔记九:函数

接受任意数量参数的函数. 当传入函数的参数个数很多的时候,在函数定义的时候不需要为每一个参数定义一个变量,可以用*rest的方式来包含多余的参数. 如下面的代码,*rest包含了2,3,4这3个参数.且可以迭代访问.在这个例子中,rest其实就是其他位置参数组成的一个元组 def avg(first,*rest):     for i in rest:         print i     average=(first+sum(rest))/(1+len(rest))     print av

python cookbook第三版学习笔记十三:类和对象(五)代理类以及内存回收

代理类: 代理类的作用其实有继承有些类似,如果你想将某个实例的属性访问代理到内部另外一个实例中去,可以用继承也可以用代理.来看下代理的应用: class A:     def spam(self,x):         print 'in Class A x=%d' % x     def foo(self):         print 'in Class A:foo()' class B1:     def __init__(self):         self._a=A()       

《Linux命令、编辑器与shell编程》第三版 学习笔记---003

Shell准备 1.识别Shell类型 echo  $0 echo $BASH echo $SHELL 上边三个命令结果都是: /bin/bash 2.终端常用操作 a.删除单个字符 c+h或退格键 b.删除单个单词 c+w c.删除单个行 c+u d.重复编辑命令行 arrowUp或arrowDown e.中断命令执行c+C 3.切换为root用户 a.su命令后,输入root密码 b.sudo命令,输入用户密码,需执行该命令的用户在sudo组中 4.文档查看 a.使用man 1).用户命令