javaWeb以及spring学习需要掌握面向对象的知识: 下篇

一.集合  *

1.1 为什么需要集合

数组的长度不可变,而集合可以存储任意类型的对象,并且长度可变。

1.2 集合的分类

 1.3  Collection

单列集合常用方法(单列集合的方法单列集合的实现类都可以用)
方法声明功能描述
boolean add(Object 0)向集合中添加一个元素
boolean addAll(Collection c)将指定集合c中的所有元素添加到该集合中
void clear()删除该集合中的所有元素
boolean remove(Object o)删除该集合中指定的元素
boolean removeAll(Collection)删除该集合中包含指定集合c中的所有元素
boolean isEmpty()判断该集合是否为空
boolean contains(Object o)判断该集合中是否包含某个元素
boolean containsAll(Coilection c)判断该集合中是否包含指定集合c中的所有元素
Iterator iterator()返回在该集合的元素上进行迭代的迭代器(Iterator),用于遍历该集合所有元素
ing size()获取该集合元素个数
Steam<E> stream()将集合源转换为有序元素的流对象

   1.3.1 List接口

List集合独有方法
方法声明功能描述
Object get(int index)获取集合索引处的元素
Object remove(int index)删除集合索引处的元素
void add(int index, Object element)将元素element插入在List集合的指定索引位置
int indexOf(Object o)返回对象o在List集合中首次出现的位置索引
int lastIndexOf(Object o)返回对象o在List集合中最后一次出现的位置索引
List subList(int fromIndex, int tolndex)返回从索引fromIndex(包括)到tolndex(不包括)处所有元素集合组成的子集合

ArrayList实现类查询较多的时候用

优缺点:

缺点: 增删改效率低

优点: 遍历和查找元素高效

LinkedList实现类增删较多的时候用

优缺点:

缺点: 增删改效率高

优点: 遍历查找元素慢

import java.util.ArrayList;
import java.util.List;
public class demo {
	public static void main(String[] args) {
		//1.实例化ArrayList
		//ArrayList arrayList = new ArrayList();
		//1.实例化LinkedList
		LinkedList  arrayList = new LinkedList();
		//添加元素
		arrayList.add("张三");
		arrayList.add("李四");
		arrayList.add("李四");
		arrayList.add("王五");
		System.out.println(arrayList); //[张三, 李四, 李四, 王五]
		//返回index索引处的元素
		System.out.println(arrayList.get(0)); //张三
		//对象在集合中第一次出现的位置的索引
		System.out.println(arrayList.indexOf("李四")); //1
		//对象在集合中最后一次出现的位置的索引
		System.out.println(arrayList.lastIndexOf("李四")); //2
		//修改索引处的元素
		arrayList.set(0,"卡卡"); 
		System.out.println(arrayList); //[卡卡, 李四, 李四, 王五]
		//删除索引处的元素
		arrayList.remove(0); 
		System.out.println(arrayList); //[李四, 李四, 王五]
		//判断集合是否为空
		System.out.println(arrayList.isEmpty());
		//判断集合是否有该元素
		System.out.println(arrayList.contains("李四"));
		//获取集合元素个数
		System.out.println(arrayList.size());
	
		//集合转数组
		for(int i=0;i<arrayList.toArray().length;i++) {
			System.out.print(arrayList.toArray()[i]+",");  //李四,李四,王五,
		}
	}
}

 1.3.2 Set接口

Set集合和LIst集合存取方式一样,二者的区别在与List集合有索引; List是有序的,而Set是无序的,无索引;

1.3.2.1 HashSet集合

根据对象的哈希值来确定元素在集合存储的位置,因此具有良好的存取和查找性能;

 1.3.2.2 TreeSet集合

采用平衡二叉树来存储元素,这样的结构可以保证TreeSet集合中没有重复的元素,并且可以对元素进行排序。

TreeSet集合独有方法
方法声明功能描述
Object first()返回TreeSet集合的首个元素
Object last()返回TreeSet集合的最后一个元素
Object lower(Object o)返回TreeSet集合中小于给定元素的最大元素,如果没有返回null
Object floor(Object o)返回TreeSet集合中小于或等于给定元素的最大元素,如果没有返回null
Object higher(Object o)返回TreeSet集合中大于给定元素的最小元素,如果没有返回null
Object ceiling(Object o)返回TreeSet集合中大于或等于给定元素的最小元素,如果没有返回null
Object pollFirst()移除并返回集合的第一个元素
Object pollLast()移除并返回集合的最后一个元素
 1.3.2.3 示例
import java.util.HashSet;
import java.util.TreeSet;

public class hset {
	public static void main(String[] args) {
		//HashSet
		HashSet hashSet = new HashSet();
		hashSet.add("张三");
		hashSet.add("李四");
		hashSet.add("王五");
		hashSet.add("99");
		hashSet.forEach(has -> System.out.println(has)); //99 李四 张三 王五
		
		//TreeSet
		TreeSet<Object> treeSet = new TreeSet<>();
		treeSet.add("张三");
		treeSet.add("李四");
		treeSet.add("王五");
		treeSet.add("99");
		treeSet.forEach(has -> System.out.println(has)); //99 张三 李四  王五
	}

}

1.3.3 foreach与forEach遍历List集合

1.3.3.1 语法

foreach遍历集合:

for(容器中元素类型 临时变量 : 容器变量) {

     //执行语句

      System.out.println(临时变量);

}

forEach遍历集合:

容器变量.forEach(临时变量  -> System.out.println(临时变量));

1.3.3.2 示例
public class Test {
   public static void main(String[] args) {
	     ArrayList<Object> arrayList = new ArrayList<>();
	     arrayList.add(10);
	     arrayList.add(20);
	     arrayList.add(30);
	     arrayList.add(40);
	     //使用forrach遍历集合
	     for(Object obj : arrayList) {
	    	 System.out.println(obj);  // 10 20 30 40
	     }
	     System.out.println("------------------------");
	     //使用forEach遍历集合
	     arrayList.forEach(obj -> System.out.println(obj));  // 10 20 30 40
   }
}

1.4 Map

1.4.1 HashMap集合

键和值允许为空,但是键不能重复,且集合中的元素是无序的;底部采用哈希表

1.4.2 TreeMap集合

键和值允许为空,但是键不能重复,且集合中的元素是有序的;底部采用二叉树

 1.4.3 LinkedHashMap集合

底层和HashMap一致,用哈希表实现,区别是LinkedHashMap还使用了一个双向链表实现顺序存取;并且LinkedHashMap集合是有序的

 1.4.3 forEach遍历Map集合

1.4.3.1 语法

    容器变量.forEach( (key,value)  -> System.out.println(key +":"+ value) );

1.4.3.2 示例
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.TreeMap;

public class maps {
	public static void main(String[] args) {
		//HashMap 无序 
	    HashMap hashMap = new HashMap();
	    hashMap.put("name", "小黑子");
	    hashMap.put("sex", "男");
	    hashMap.put("age", "25");
	    hashMap.put("hobby", "打篮球");
        //forEach
	    hashMap.forEach((key,value) -> System.out.println((key +":"+ value)));
		/*
		 * 输出结果: sex:男 name:小黑子 age:25 hobby:打篮球
		 */
	    System.out.println("-----------------------");
	    
	    //TreeMap 无序
	    TreeMap treeMap = new TreeMap();
	    treeMap.put("name", "小黑子");
	    treeMap.put("sex", "男");
	    treeMap.put("age", "25");
	    treeMap.put("hobby", "打篮球");
	    treeMap.forEach((key,value) -> System.out.println((key +":"+ value)));
		/*
		 * 输出结果: age:25 hobby:打篮球 name:小黑子 sex:男
		 */
	    System.out.println("-----------------------");
	    
	    //linkedHashMap 有序
	    LinkedHashMap linkedHashMap = new LinkedHashMap();
	    linkedHashMap.put("name", "小黑子");
	    linkedHashMap.put("sex", "男");
	    linkedHashMap.put("age", "25");
	    linkedHashMap.put("hobby", "打篮球");
	    linkedHashMap.forEach((key,value) -> System.out.println((key +":"+ value)));
	    /*
		 * 输出结果: name:小黑子 sex:男 age:25 hobby:打篮球
		 */
	    
	}
}

1.5  泛型

 泛型可以跟定操作的数据类型,在定义集合时,可以使用<参数类型>指定集合中存储的数据类型,格式如下:

ArrayList<Object> list = new ArrayList<Object>();

import java.util.ArrayList;

public class arrayList {
	public static void main(String[] args) {
	    ArrayList<Integer> list =  new ArrayList<Integer>();
	    list.add(1);
	    list.add(100);
	    list.add(1000);
	    list.forEach(li -> System.out.println(li));
		/*
		 * 输出 1 100 1000
		 */
	}
}

二.JDBC *

2.1 什么是JDBC

JDBC(Java Database Connectivity,Java 数据库连接)是一套用于执行SQL语句的Java API。应用程序可通过这套API连接到关系型数据库,并使用SQL语句来完成对数据库中数据的查询、新增、更新和删除等操作。

2.2 JDBC常用API

Driver 接口:  驱动

DriverManager 类:  用于加载JDBC驱动并且创建于数据库的连接

Connection 接口:  代表java程序和数据库的连接对象,获取连接对象后才能访问数据库

Statement 接口: 执行静态的sql语句,并反回一个结果

PreparedStatement 接口:  sql语句可以用占位符"?"来代替参数

ResultSet接口: 用于保存JDBC执行查询时反回的结果集

2.3 连接数据库 

第一步: 加载数据库驱动

Class.forName("com.mysql.cj.jdbc.Driver");  //数据库8.0以上要加cj

第二步: 获取数据库连接

Connection conn = DriverManager.getConnection(String url,String user,String pwd);

第三步: 获取Statement对象

Statement stmt = conn.createStatement();

第四步: 执行sql

ResultSet rs = stmt.executeQuery(sql);

第五步: 操作结果集

第六步: 关闭连接,释放资源

 三. javaWeb以及spring学习需要掌握面向对象的知识: 上篇

http://t.csdn.cn/H17JA

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值