2016.03.13总结

十五章 集合框架

1. 集合的特点:元素类型可以不同,长度可变,空间大小不确定。
2. JCF(java collection framwork)中主要集合分类:List,Set,Map;List和Set是Collection接口的子接口,该接口与Map平行。
3. List接口:数据元素可重复,元素插入时按索引顺序排列。
常用实现类:ArrayList:适用于查找元素,添加删除元素时效率低。LinkedList:适用于添加删除元素,查找元素时效率低。
常用方法:get()获取元素,set()设置元素,remove()删除元素,add()依次在后面加入元素,size()集合大小。
4. Set接口: 数据元素不可重复,元素排列无序。
常用实现类:HashSet:速度快,不排序。TreeSet:速度慢,排序。LinkedHashSet:有序的集合,是对set的优化,插入元素时按顺序插入。
常用方法:remove()删除元素,add()加入元素,size()集合大小。
5. 泛型:由于元素被封装进集合后,具体类型被隐藏,要操作具体元素时必须进行强转,并且元素类型不一致容易造成混乱,极有可能会出现异常,所以在集合声明时加上泛型,将集合统一为一个类型的数据。如:List<String> ls = new ArrayList<String>(); “<String>”就是泛型表达式。
6. Map接口:是由key/value对组成的无序集合;key和value都可以是任意数据类型,但集合中不能有重复的key值,value值可有重复。
常用实现类:HashMap:速度快,不排序。TreeMap:速度慢,排序。LinkedHashMap:有序的,元素依次插入。
常用方法:put(k,v)插入元素;get(k)获取元素value;keySet()将map中所有key取出形成一个set;values()取出所有value返回一个集合;remove(k)删除元素。
7. Collections,Arrays工具类:Collections是用来操作集合的工具类,用的较多;Arrays是用来操作数组的工具类,用的较少。
Collections中的sort方法可以通过使用Comparator比较接口来重写compare()方法设定排列顺序;或者通过将需要被排序的类应用comparable接口,并重写compareTo()方法来设定排列顺序。(重写时,return-1为当前元素排在前,1为后,0为不动)

十五章 集合(2)

1. Iterator迭代器:用来对集合进行遍历的,效率比for each高。主要方法有hasNext()和next(),分别用于判断是否有下一个元素,及获取下一个元素。
2. Set和List通过.iterator()方法获取相应的迭代器,并返回一个Iterator。
3. Map集合没有直接的iterator()方法,必须通过.entrySet()获取一个包含K/V映射的Set集合,集合的返回类型为Entry(Map的内部接口),然后通过Set的iterator()方法获取迭代器来遍历该Entry集合,然后对每个Entry对象可使用.getKey()和getValue()来获取相应的key和value值。代码例子如下:

// Map
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);

//使用entrySet将map的键值对映射关系转换成Set集合
Set<Map.Entry<String, Integer>> set = map.entrySet();

//调用Set的iterator方法,得到其迭代器
Iterator<Map.Entry<String, Integer>> mapIter = set.iterator();

while(mapIter.hasNext()){
//next 得到的是Entry对象,而不是直接的键和值
Map.Entry<String, Integer> entry = mapIter.next();

String key = entry.getKey();
Integer val = entry.getValue();
System.out.println("key: " + key + "\t" + "value: " + val);
}

第十六章 GUI (01)

1. 单例:只能创建一个对象的类,不能调用其构造,通过方法生成一个全局静态对象。例如:public class Single{
private static Single instance;
private Single(){}
public synchronized Single getInstance(){
if(this.instance == null){
this.instance = new Single();
}
return this.instance;
}
}

2. GUI分为首层容器:JFrame,JWindow和JDialog用于装入其他容器和组件,组件都放在首层容器的内容面板内(Container)通过容器的静态方法getContentPane()获取。并由container的add(组件)方法将组件加入进去后才能在首层容器页面中显示出来。

3. GUI程序编写步骤:
a.建立容器:
通过自定义一个类继承JFrame等首层容器来建立一个新容器类,并在其中设置标题(setTitle()),大小(setSize()),渲染(setVisible()这步放在最后),以及添加组件等。
b.建立组件:
常用组件有:JLable(文本)、JTextField(输入框)、JPasswordField(密码输入框)、JTextArea(文本域)、JRadioButton(单选栏,一般配合ButtonGroup使用)、JCheckBox(复选栏)、JComboBox(下拉菜单,创建对象时传参用String[])、JButton(按钮)。通过setBorders()设置组件位置和大小,通过setFont(new Font())来设置字体样式大小等,还可以用setBorder(BorderFactory.XXX())来设置边框样式,其中通过调用工具类BorderFactory中的方法来设置,具体方法见JDK API。
c.将组建添加到容器:
获取容器:Container content = this(JFrame对象).getContentPane();并通过content.add(Component)来添加。
d.设置布局:
通过setBorders(),setFont(new Font()),setBorder(BorderFactory.XXX())等来设置。
e.设置事件。
ps:动态和静态的区分:是否有交互,有交互的成为动态。

时间: 2024-07-31 14:25:52

2016.03.13总结的相关文章

Linux学习笔记2016.03.13

呜呜,今天10点半从实验室回来后和女朋友吵了很大一架,都快要分手了感觉,但是学习也不能中断,因为只有无论什么都坚持下去才会把好习惯养成,我知道如果将来我和我女朋友在一起过日子,我也必须多些技能去挣钱养活她嘛! 不过好烦啊,看不进去啊,今天就看了两个命令,关于文件操作的,就总结下来吧. 1.创建文件命令 touch  创建一个没有属性的普通文件,直接在touch 后面添加文件名字就行了 如 touch  a  就床建了一个空文件a 2.创建一个有内容的文件,一般也可一通过创建新文件,然后通过VIM

分布式技术一周技术动态 2016.03.20

分布式系统实践 1. 基于Mesos和Docker的分布式计算平台 https://mp.weixin.qq.com/s?__biz=MzAxMDgzOTA2Mw==&mid=402769128&idx=1&sn=cea3ad1357bd9312acf1768c0a493bfd&scene=1&srcid=0318BTuxT0fsFYwPjpeyuDOa&key=710a5d99946419d90fbc1e7600cce055b6e997d6afafc74c

二维练习和函数学习03/13

二维练习和函数学习03/13     二维练习     1.      抽奖活动:输入n个手机号码,滚动号码,5秒钟后停止输出中奖人号码 Console.Write("请输入人数:"); int a = int.Parse(Console.ReadLine()); string[] sj = new string[a]; for (int i = 0; i < a; i++) { Console.Write("输入第" + (i + 1) + "个人

9x25 LED 驱动框架分析 2016.07.13

进入内核 make menuconfig 输入 /led 回车搜索到 │ Location: │ │ -> Device Drivers │ │ -> LED Support (NEW_LEDS [=y]) 进入LED Support发现有这一项 []LED Support for GPIO connected LEDs 在内核搜索该字符串 grep "LED Support for GPIO connected LEDs" * -nR 搜索到 drivers/leds/K

微软Azure云之企业Exchange 2016部署13&mdash;DNS配置

本节我们来配置DNS域名解析. 因为本次Exchange部署在Azure公有云上,所有用户访问通过公网来进行连接,所以这里主要是公网DNS配置. 1.DNS正向解析 对于Exchange来说.如果邮件客户端仅仅使用MAPI模式连接,则需要配置mail.autodiscover.解析以及主域名的MX记录解析.如果需要其他如POP.SMTP.IMAP等服务时,有时为了区分服务DNS解析,也可以分别配置. 另外,这里设置了一条TXT解析:v=spf1 ip4: 13.78.59.202/32 –all

2016.10.13 工作遇到的一些mongo问题

一.tokumx 2.4 用户管理操作 db.isMaster() use admin db.addUser("root","rootpwd")默认为管理员用户 db.auth("root","rootpwd")   验证用户 db.system.users.find()    查看用户 db.system.users.update({"user":"zayhuroot"},{"

python学习2016.4.13

Python函数   (1)数据框的另一种定义方式,将数据内容(多维数组)直接放入data中,再定义columns和index.(数据框.columns是取列名,.index是取行名,取出的类型类似元组,可以用[0],[1]-直接取出) df = pd.DataFrame(data=[[34, 'null', 'mark'], [22, 'null','mark'], [34, 'null', 'mark']], columns=['id', 'temp', 'name'], index=[1,

2016.6.13 考试总结

一.哲哲回家 [题目描述]: 哲哲放学了,准备坐公交车回家.因为急着回家看MSN战士,所以他想用最短的时间回家,但是因为学校离家里比较远,有时候他需要转几趟车才可以回家.等车是需要一段时间的,而且每辆公交车的速度不一样,哲哲晕掉了,不知道怎样才可以在最短的时间里回家,作为一名cjoier,你应该帮帮他. 现在一直哲哲所在的城市有N个公交站点(学校在一号站点,哲哲家在N号站点)和M条公交线路,每条公交线路是一个有序集合,公交线路i包含Pi个站点a[i,1],a[i,2]…a[i,Pi],表示i号公

uboot.2016.03 在mini2440上norfalsh启动

本人有点懒惰,直接在smdk2410的基础上进行修改 (note :红色字体表示修改内容,蓝色字体表示增加内容) 1. 顶层的makefile 在247行 添加如下两条语句 :   ARCH :=arm     CROSS_COMPILE :=arm-linux- 2 修改始终频率 打开 u-boot-2016.03/arch/arm/cpu/arm920t/start.S 第77行 #if defined(CONFIG_S3C2410) #if defined(CONFIG_S3C2440)