2020-08-19

第十四次课
泛型
一.
package com.hpe.fanxing;

import java.util.*;

/**

  • 泛型接口
  • 业务逻辑: 处理数据的增删改查。 add(Person) del(int ) get(Person)
  •                  add(Student) del(int ) get(Student)
    
  • @author Administrator

*/
public interface Dao {
void add(T t);

int del(int id);

List<T> getList();

}
二.
package com.hpe.fanxing;

import java.util.*;

/**

  • 泛型:
  • 1、在集合中使用泛型 List l = new ArrayList();
  • 2、泛型类
  • 3、泛型方法 格式:
  • class 类名<字母列表“T”“K”>{
  • 修饰符 字母T 属性; 修饰符 字母T 方法(字母T t) }
  • 4、泛型接口 模拟dao层接口。
  • 5、通配符 ?
  • List<? super A > ?必须是A的子类。
  • @author Administrator

*/
public class Demo4 {

/*
 * 通配符  泛型中的使用 
 * ?
 */
public static void show(List<?> list) {
	
}
// list中放置的必须是number的子类或numbber
public static void show1(List<? extends Number> list) {
	
}
// list中放置Integer的父类或者Integer
public static void show2(List<? super Integer> list) {
	
}

public static void main(String[] args) {
	// 调用 泛型类
	Order<Integer> o = new Order<Integer>();
	o.getT();
	// 调用泛型方法
	String s = o.getOrder("string");
	Order o1 = o.getOrder(o);

	System.out.println(s);
	// 数组复制 泛型方法
	List list = o.copyArrayToList(new String[] { "e", "b", "a" }, new ArrayList());
	System.out.println(list.size());

	// 泛型通配符的使用
	show(new ArrayList<String>());
	show1(new ArrayList<Double>());
	show2(new ArrayList<Number>());
}

// 泛型方法 不在使用T,另外一个类型 E。
public <E> E getOrder(E e) {
	return e;
}

/**
 * 数组E 到集合 List<E> 的复制
 */
public <E> List<E> copyArrayToList(E[] e, List<E> list) {

	for (E tmpe : e) {
		list.add(tmpe);
	}
	return list;
}

}
三.
package com.hpe.fanxing;

import java.util.List;

/**

  • 泛型类
  • @author Administrator

*/
public class Order {
// 构造
public Order(T xxxx) {

}
public Order() {}

// 属性
private T t;

public T getT() {
	return t;
}
public void setT(T t) {
	this.t = t;
}
// 泛型方法   不在使用T,另外一个类型 E。
public <E> E getOrder(E e){
	return e;
}

/**
 * 数组E 到集合 List<E> 的复制
 */
public <E> List<E>  copyArrayToList(E[] e,List<E> list){
	
	for(E tmpe:e) {
		list.add(tmpe);
	}
	return list;
}

}
四.
package com.hpe.fanxing;

import java.util.List;

import com.hpe.map.Person;

/**

  • 实训泛型接口
  • @author Administrator

*/
public class PersonDao implements Dao{

@Override
public void add(Person t) {
	// TODO Auto-generated method stub
	
}

@Override
public int del(int id) {
	// TODO Auto-generated method stub
	return 0;
}

@Override
public List<Person> getList() {
	// TODO Auto-generated method stub
	return null;
}

}
MAP
一.package com.hpe.map;

import java.util.*;

/**

  • Map 接口原理讲解。
  • @author Administrator

*/
public class Demo1 {
public static void main(String[] args) {
new ArrayList();
// 非常规的使用。电话簿
Map<Integer,Object> map = new HashMap<Integer,Object>();
for(int i = 0;i < 1000;i ++) {
map.put(i, “zhang”+i);
}

	System.out.println("==");
	//map 特性。 通常的使用情况。
	Person p1 = new Person();
	p1.setAge(20);
	p1.setName("zhangsan");
	
	
}

public void test(Person p1) {
	System.out.println(p1.getAge() > 20);
}

public void test1(Map map) {
	System.out.println( (Integer)map.get("age") >  20);
}

// 获取 年龄,姓名,分页信息
public Map<String,Object> getP() {
	int age = 100;
	String name = "a";
	int page = 2;
	int code = 0;
	
	Person p = new Person();
	p.setAge(age);
	p.setName(name);
	
	Map<String,Object> map = new HashMap<String,Object>();
	map.put("code",code); // code:标记  page:页数  date:数据(Person)
	map.put("page",page);
	map.put("date", p);
	
	return map;
}

}
二.
package com.hpe.map;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.*;
import java.util.TreeMap;

/**

  • map接口
  • 1、存放key-value数据
  • key:不可以重复(底层使用的set)
  • value:可以重复的。底层使用的collection接口。
  • 2、实现类:
  • HashMap
    
  • LinkedHashMap
    
  • TreeMap
    
  • HashTale (不在使用)线程安全的容器
    
  •    Properties子类,做键值对文件读取。
    
  • 3、常用方法;
  •  put(key,value)
    
  •  get(key);返回Object
    
  •  size();
    
  •  keySet(); 返回一个 Set容器,含义:获取所有的key。    
    
  •  values();  
    
  • @author Administrator

*/
public class Demo2 {
public static void main(String[] args) {
new ArrayList();
// 非常规的使用。电话簿
Map<Integer,Object> map = new HashMap<Integer,Object>();
for(int i = 0;i < 1000;i ++) {
map.put(i, “zhang”+i);
}

	// 1、遍历方式。keyset
	Set<Integer> keySet = map.keySet();
	for (Integer tmp : keySet) {
		String value = (String)map.get(tmp); // tmp map容器的key
		System.out.println(value);
	}
	
	//		
	System.out.println("==");
	//map 特性。 通常的使用情况。
	Person p1 = new Person();
	p1.setAge(20);
	p1.setName("zhangsan");
	// 实体类 ===》 map容器 
	Map<String,Object> perMap = new HashMap<String,Object>();
	perMap.put("age", 20);   // key="age" key2= "name"
	perMap.put("name","zhangsan");
	
	// 2、遍历map 。 get(提前得知的key)
	int age = (Integer)perMap.get("age");
	String name = (String)perMap.get("name");

	// 3、遍历map  。 获取所有values.
	Collection<Object> values = perMap.values();
	Iterator<Object> iterator = values.iterator();
	while(iterator.hasNext()) {
		Object v = iterator.next();
		System.out.println(v);
	}
	
	// 4、entrySet遍历map,把map中每一个键值对封装到Set<Entry>
	Set<Entry<String, Object>> entrySet = perMap.entrySet();
	for (Entry<String, Object> entry : entrySet) {
		String key = entry.getKey();    // 获取key的方法
		Object tmpObject = entry.getValue();         // 获取value的方法
	}
	
	testTreeMap();
}

public static void testTreeMap() {
	// treemap
	Map<Integer,Object> treemap = new TreeMap<Integer,Object>();
	treemap.put(3, "a");
	treemap.put(7, "b");
	treemap.put(1, "c");
	
	for(Integer key:treemap.keySet()) {
		System.out.println(treemap.get(key));
	}
	// 定制排序
	Map<String,Object> tmap = new TreeMap<String,Object>(new Comparator<String>() {
		@Override
		public int compare(String o1, String o2) {
			// 自定义
			return 0;
		}
	});
	tmap.put("b", "b");
	tmap.put("a", "a");
	tmap.put("c", "c");
	
	for (String k : tmap.keySet()) {
		System.out.println(tmap.get(k));
	}
	
}

public void sortList() {
	List<Person> arrayList = new ArrayList<Person>();
	Person p1 = new Person();
	p1.setName("jom");
	Person p2 = new Person();
	p2.setName("abc");
	Person p3 = new Person();
	p3.setName("z");
	
	// collections工具类  
	//Collections.sort(arrayList);// 需要person类实现comparable接口
	Collections.sort(arrayList, new Comparator<Person>() {
		@Override
		public int compare(Person o1, Person o2) {
			// TODO Auto-generated method stub
			return 0;
		}
	});
}

}
三.
package com.hpe.map;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**

  • properties类
  • @author Administrator

*/
public class Demo3 {
public static void main(String[] args) throws FileNotFoundException, IOException {
Properties pros = new Properties();
// 设置绝对路径。
//pros.load(new FileInputStream(“D:\1-workspace\Demo13_2\src\jdbc.properties”));
InputStream resourceAsStream =
Demo3.class.getClassLoader().getResourceAsStream(“jdbc.properties”);
pros.load(resourceAsStream);

	String user = pros.getProperty("user");
	System.out.println(user);

}

}
四.
package com.hpe.map;

public class Person {//implements Comparable{
private String name;
private Integer age;

/*
 * @Override public int compareTo(Person o) {
 * 
 * return o.getAge() - this.getAge(); }
 */

public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public Integer getAge() {
	return age;
}
public void setAge(Integer age) {
	this.age = age;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值