第十四次课
泛型
一.
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;
}
}