- 浏览: 139864 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
aa87963014:
很好,但是update/insert 是否加锁 。加锁对sel ...
数据库锁 -
RobustTm:
我的这种做法也可以添加A和B
但是换成更新就有问题
hibernate入门(十一):级联操作inversin属性 -
RobustTm:
这位仁兄可以提供一对多双向关联完整的代码不?
我碰到了问题,采 ...
hibernate入门(十一):级联操作inversin属性 -
cfeers:
markxing 写道谢谢分享。。。
不客气,呵呵。
struts2.0 struts.xml配置文件详解 -
markxing:
谢谢分享。。。
struts2.0 struts.xml配置文件详解
自己记得一些笔记:容器
【1-1.容器的感念】:
Java API 所提供的一系列类的实例,用于在程序中存放对象。
*****************************************************************************
【1-2.容器API】
J2SDK 所提供的容器API 位于java.util包内
容器API的类图机构如下:
Collection
Set List Map
HashSet LinkedList ArrayList HashMap
**********************************************************
*Set (没有顺序不可以重复)
*List(有顺序,可以重复<equals>)
*Map(存储"键(key)——值(value)映射对"的方法,2个2个往里装)
**********************************************************
*如何选择数据结构*
衡量标准:读的效率和改的效率
* Array读快改慢
* Linked改快读慢
* Hash两者之间
*****************************************************************************
【1-3.Collection接口】
Collection接口中所定义的方法:
int size(); 放了多少个元素
boolean isEmpty(); 是否为空
void clear(); 清空
boolean contains(Object element); 是不是包含指定的某个对象元素(equals)
boolean add(Object element); 添加
boolean remove(Object element); 去除
Iterator iterator();
boolean containsAll(Collection c); 是不是包含所有元素
boolean addAll(Collection c);
boolean removeAll(Collection c);
boolean retainAll(Collection c); 集合类的交集
Object[] toArray(); 里面的对象转换为一个对象类型的数组
------------------------------------------------------------------------
容器类对象在调用remove、contains等方法时需要比较对象是否相等,这会涉及到
对象类型的equals方法 和hashCode方法;对于自定义的类型,需要要重写equals
和hashCode方法以实现自定义的对象相等规则。
【注意】:相等的对象应该具有相等的hash codes。
例子如下:
import java.util.*;
public class Test{
public static void main(String[] args){
Collection c = new HashSet();
c.add("Hello");
c.add(new Name("f1","l1"));
c.add(new Integer(100));
c.remove("Hello");
c.remove(new Integer(100));
System.out.println(c.remove(new Name("f1","l1")));
System.out.println(c);
}
}
class Name{
private String firstName,lastName;
public Name(String firstName, String lastName){
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName(){
return firstName;
}
public String getLastName(){
return lastName;
}
public String toString(){
return firstName + " " + lastName;
}
public boolean equals(Object obj){
if(obj instanceof Name){
Name name = (Name) obj;
return (firstName.equals(name.firstName))&&(lastName.equals(name.lastName));
}
return super.equals(obj);
}
public int hashCode(){
return firstName.hashCode();
}
}
*****************************************************************************
【1-4.lterator接口】 ====> 就是一个统一的,来遍历Collection里面所有元素的方法,
Iterator对象的remove方法是在迭代过程中删除元素的唯一安全方法。
所有实现了Collection 接口的容器类都有一个iterator方法用以返回一个
实现了Iterator接口的对象
Iterator对象称作迭代器,用以方便的实现对容器内元素的遍历操作
Iterator接口定义了如下方法:
boolean hasNext(); //判断游标右边是否有元素
Object next(); //返回游标右边的元素并将游标移动到下一个位置
void remove(); //删除游标左面的元素,在执行完next之后,该操作只能执行一次
*****************************************************************************
【1-5.增强的for循环】
JDK 1.5增强的for循环,
增强的for循环对于遍历array 或 Collection 的时候相当简单
缺陷:
数组:不能方便的访问下标值
集合:与使用Iterator(可以调用remove方法)相比,不能方便的删除集合中的内容
在内部也是调用Iterator
总结:除了简单遍历并读出其中的内容外,不建议使用增强for循环
例如:
import java.util.*;
public class EnhancedFor{
public static void main(String[] args){
int[] arr = {1,2,3};
for(int i : arr){
System.out.println(i);
}
Collection c = new ArrayList();
c.add(new String("aaa"));
c.add(new String("bbb"));
c.add(new String("ccc"));
for(Object o : c){
System.out.println(o);
}
}
}
result:
1
2
3
aaa
bbb
ccc
*****************************************************************************
【1-6.Set接口】
Set接口是Collection 的子接口,Set接口没有提供额外的方法,但实现
Set接口的容器类中的元素是没有有顺序的,而且不可以重复。
Set容器可以与数学中的“集合”的概念相对应
J2SDK API中所提供的Set容器类有HashSet,TreeSet等
例如:
import java.util.*;
public class TestSet{
public static void main(String[] args){
Set s1 = new HashSet();
Set s2 = new HashSet();
s1.add("a");s1.add("b");s1.add("c");
s2.add("d");s2.add("a");s2.add("b");
//构造方法 用以初始化容器类
Set sn = new HashSet(s1);
sn.retainAll(s2);
Set su = new HashSet(s1);
su.addAll(s2);
System.out.println(sn);
System.out.println(su);
}
}
*****************************************************************************
【1-7.List接口 和 Comparable接口】
======1.List接口======
List接口是Collection的子接口,实现List接口的容器类中的元素是有顺序的,而且可以重复
List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。
J2SDK所提供的List容器类有ArrayList,LinkedList等
【List 常用算法】
类Java.util.Collections 提供了一些静态方法实现了基于List容器的一些常用算法。
void sort(List) 对List容器内的元素排序
void shuffle(List) 对List容器内的对象进行随机排列
void reverse(List) 对List容器内的对象进行逆序排列
void fill(List, Object) 用一个特定的对象重写整个List容器
void copy(List dest,List src) 将src List容器内容拷贝到dest List容器
int binarySearch(List, Object)对于顺序的List容器,采用折半查找的方法查找特定的对象
=====2.Comparable接口=====
所有可以"排序"的类都实现了Java.lang.Comparable 接口,Comparable接口
中只有一个方法:
public int CompareTo(Object obj); 该方法:
返回0 表示 this == obj
返回正数表示 this > obj
返回负数表示 this < obj
实现了Comparable接口的类通过实现 comparaTo 方法从而确定该类对象的排序方式。
*****************************************************************************
【1-8.Map 接口】
实现Map接口的类用来存储 键—>值 对。
Map接口的实现类有HashMap(Hash索引)和TreeMap(Tree索引)等。
Map类中存储的键—>值对通过键来标识,所以键值不能重复(互相必须equals,但是效率太低,所以要用hashCode,返回值int类型)。
【在JDK1.5以后】可以直接这样写:
Map m1 = new HashMap();
m1.put("one",1);
*****************************************************************************
【1-9.自动打包/解包】
Auto-boxing/unboxing
打包:自动将基础类型转换为对象
解包:自动将对象转换为基础类型
*************没有打包的程序*******************
Map m1 = new HashMap();
Map m2 = new TreeMap();
m1.put("one",new Integer(1));
m1.put("two",new Integer(2));
m1.put("three",new Integer(3));
m2.put("A",new Integer(1));
m2.put("B",new Integer(2));
System.out.println(m1.size());
System.out.println(m1.containsKey("one"));
System.out.println(m2.containsValue(new Integer(1)));
if(m1.containsKey("two")){
int i =((Integer)m1.get("two")).intValue();
System.out.println(i);
}
Map m3 = new HashMap(m1);
m3.putAll(m2);
System.out.println(m3);
*************自动打包以后的程序(泛型)**************
import java.util.*;
public class TestMap2{
public static void main(String[] args){
Map m1 = new HashMap();
Map m2 = new TreeMap();
m1.put("one",1);
m1.put("two",2);
m1.put("three",3);
m2.put("A",1);
m2.put("B",2);
System.out.println(m1.size());
System.out.println(m1.containsKey("one"));
System.out.println(m2.containsValue(1));
if(m1.containsKey("two")){
int i =(Integer)m1.get("two");
System.out.println(i);
}
Map m3 = new HashMap(m1);
m3.putAll(m2);
System.out.println(m3);
}
}
【1-10.泛型(JDK1.5新增)】
可以在定义Collection的时候指定
也可以再循环时用Iterator指定
泛型:增加程序的可读性和稳定性
import java.util.*;
public class BasicGeneric{
public static void main(String[] args){
List<String> c = new ArrayList<String>();
c.add("aaa");
c.add("bbb");
c.add("ccc");
for(int i=0; i<c.size(); i++){
String s = c.get(i);
System.out.println(s);
}
Collection<String> c2 = new HashSet<String>();
c2.add("aaa");c2.add("bbb");c2.add("ccc");
for(Iterator<String> it = c2.iterator(); it.hasNext();){
String s = it.next();
System.out.println(s);
}
}
}
-----------------------------------------
import java.util.*;
public class TestMap2{
public static void main(String[] args){
Map<String,Integer> m1 = new HashMap<String,Integer>();
m1.put("one",1);
m1.put("two",2);
m1.put("three",3);
System.out.println(m1.size());
System.out.println(m1.containsKey("one"));
if(m1.containsKey("two")){
//int i =(Integer)m1.get("two");
int i = m1.get("two");
System.out.println(i);
}
}
}
=====================总结第七章=========================
一个图,
一个类(Collection),
三个知识点:For Generic(泛型) Auto-boxing/unboxing,
六个接口
Collection
Set List Map
HashSet LinkedList ArrayList HashMap
lterator接口 ====> 就是一个统一的,来遍历Collection(集合)里面所有元素的方法
发表评论
-
电信系统架构方案(转自CSDN)
2011-03-03 19:51 828电信系统架构方案(转自CSDN) 撰文/青润(本文来自《程 ... -
抽象类 Abstract class
2010-09-11 17:08 795抽象类表示抽象概念, ... -
面向对象之封装
2010-09-11 17:05 825隐藏复杂性,是我们人 ... -
Java的内存管理机制
2010-09-11 16:59 930一般分成四块 Heap,stack,data segment ... -
继承的一个例子
2010-09-11 16:58 715abstract class Person{ pri ... -
java 构造方法
2010-09-11 16:54 942构造方法是一种特殊的方法,与一般的方法不同是: 1.构造方法 ... -
java 继承和接口
2010-09-11 16:52 737如果父类是抽象类,并且有抽象方法,那么子类必须重写父类的抽象方 ... -
java的异常学习
2010-09-11 16:50 709java异常学习 Java把异常 ... -
throw和throws的区别
2010-09-11 16:50 848【下面给个例子】======================= ... -
java的基本语法(七)
2010-09-11 16:49 737第十章 网络编程 1. 参考模型: ... -
java的基本语法(六)
2010-09-11 16:47 960线程的一些笔记,入门。 ... -
java的基本语法(五)
2010-09-11 16:46 698自己摘录的,难免有错 ... -
java的基本语法(三)
2010-09-11 16:44 823一些java里面的常用类。 ... -
java的基本语法(二)
2010-09-11 16:42 671自学java语法时的一些笔记, 数组 :是个引用类型, ... -
java的基本语法(一)
2010-09-11 16:36 876下面这些是我自学JAVA的时候摘录的一些笔记,给大家参考一下。 ...
相关推荐
Java基本语法大全
二、Java基本语法 1. **变量**:Java中的变量必须先声明后使用,有八种基本数据类型(byte, short, int, long, float, double, char, boolean)和引用数据类型(对象、数组、接口)。 2. **数据类型转换**:Java支持...
Java 基本语法编程练习 Java 是一种广泛使用的高级编程语言,具有平台独立性、对象oriented 和大规模的标准库等特点。Java 基本语法编程练习是学习 Java 语言的基础,以下是 Java 基本语法编程练习的知识点总结: ...
Java基本语法
JAVA的基本语法及48个关键字! chm文档! 找了好久都找不到,只好自己做一个了! 分享一下...
java基本语法大全 非常好用,详细地介绍了java语法特点,还有丰富的实例
Java基本语法.ppt 让读者对数据类型、表达式等Java基本语法内容有一个了解,这些内容是任何一门程序设计语言都必须包含的部分,可为程序设计打基础
### Java基本语法知识点详解 #### 一、章节概述 本章节旨在通过一系列具体的编程实例来帮助初学者理解和掌握Java的基本语法。通过解决一系列简单的实际问题,读者不仅能熟悉Java语言的基础特性,还能学会如何运用...
根据给定文件的信息,我们可以深入探讨Java的基本语法和核心概念,包括程序结构、注释、...以上知识点覆盖了Java基本语法的核心要素,包括程序结构、注释、数据类型以及变量和常量的使用,为初学者提供了坚实的基础。
JAVA语法大全(基本语法) JAVA语法大全是指JAVA的基本语法,包括关键字、词法规则、数据类型、常量与变量、运算符和表达式、语句、数组和字符串等方面的知识点。 一、词法规则 词法规则是JAVA程序的基本组成部分...
JavaSE阶段,基本语法部分的思维导图,学习Java对于新人来说本来就比较难,我在这里自己把基本语法部分的知识点都进行了一个串联,做成了一个思维导图,可供初学者以及备考学生进行参考
这篇总结将深入探讨Java的基础语法,帮助初学者理解并掌握Java编程的核心概念。 **1. Java程序结构** Java程序由类(Class)组成,每个类都包含方法(Method)。程序执行始于main方法。例如: ```java public class...
Java的基本语法的笔记
本_experiment_总结了 Java 的一些基本的语法知识,包括变量和常量的使用、运算符与表达式的使用、选择、循环、分支语句的使用等。实验内容包括输入一个学生的成绩,给出相应的等级、编写一个程序从键盘输入 5 个...
Java 基本语法 Java 程序设计的基本语法是学习 Java 的基础,这部分内容涵盖了 Java 的变量、常量、运算符、控制语句等基础知识。 一、变量 在 Java 中,变量是存储数据的一个基本单元房间,变量名是房间的名字,...
### Java基础语法汇总 本文将基于给定的文件信息,对Java的基础语法进行一次全面而深入的解析。Java作为一种广泛使用的编程语言,在软件开发、Web应用、移动应用等多个领域都有着重要的地位。对于初学者而言,掌握...
01.Java基本语法
以下是Java基本语法的一些核心知识点: 1. **数据类型**:Java有两大类数据类型,即基本数据类型和引用数据类型。基本数据类型包括整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔...
总的来说,Java基本语法的学习对于初学者来说至关重要,因为它提供了编写Java程序的基础。理解这些概念后,开发者能够创建简单的程序,并逐渐进阶到更复杂的面向对象编程。通过不断的实践和学习,可以掌握Java编程的...