《java程序设计》第八周学习总结
第十五章 泛型与集合框架
一.知识点学习
1.String类
1.String类不可以有子类。
2.用户无法输出String对象的引用,输出的是字符序列
3.构造方法:String s = new String("We are students");
4.其他构造方法:String (char a[ ]) 和 String(char a[],int startIndex,int count)
1.泛型:
泛型(Generics)的主要目的是可以建立具有类型安全的集合框架,如链表、散列映射等数据结构。
泛型类声明:class 名称
*泛型类声明对象:类名后多了一对,必须要用具体的类型替换<>中的泛LinkedList
mylist=new LinkedList();
- 泛型类中的泛型变量bottom只能调用Object类中的方法
*在使用这些泛型类建立数据结构时,不必进行强制类型转换,即不要求进行运行时的类型检查
2.链表:
*LinkedList泛型类创建的对象以链表结构存储数据。
add(E obj)向链表依次增加节点。
LinkedList泛型类实现Lis泛型接口中的一些常用方法
public boolean add(E element)向链表末尾添加一个新的节点。
public void add(int index ,E element)向链表的指定位置添加一个新的节点。
public void clear()删除链表的所有节点,使当前链表成为空链表。
public E remove(int index)删除指定位置上的节点。
public boolean remove(E element)删除首次出现含有数据elemen的节点。
public E get(int index)得到链表中指定位置处节点中的数据。
LinkedList泛型类本身新增加的一些常用方法
public void addFirst(E element)向链表的头添加新节点。
public void addLast(E element)向链表的末尾添加新节点。
public E getFirst()得到链表中第一个节点中的数据。
public E getLast()得到链表中最后一个节点中的数据。
public E removeFirst()删除第一个节点,并返回这个节点中的数据。
3.堆栈
*堆栈是一种“后进先出”的数据结构,只能在一端进行输入或输出数据的操作。
先进后出(First In Last Out)
后进先出(Last In First Out)
使用Stack泛型类创建一个堆栈对象
使用push、pop、empty、peek、search等方法对栈进行操作或查看栈的状态
public E push(E item);实现压栈操作
public E pop();实现弹栈操作
public boolean empty();判断堆栈是否还有数据
public E peek();获取堆栈顶端的数据,但不删除该数据
public int search(Object data);获取数据在堆栈中的位置
4.散列映射
*常用方法:
public void clear()清空散列映射
public Object clone()返回当前散列映射的一个克隆
public V get(Object key)返回散列映射中使用key做键的键/值对中的值
public V put(K key,V value)将键/值对数据存放到散列映射中,该方法同时返回键所对应的值
public boolean isEmpty()如果散列映射不含任何“键/值”对,方法返回true,否则返回false
public V remove(Object key)删除散列映射中键为参数指定的“键/值”对,并返回键对应的值
public int size()返回散列映射的大小,即散列映射中“键/值”对的数目
5.树集
*TreeSet类创建的对象称作树集
在树集中,同一层中的结点从左到右按:大小顺序递增,从上到下递增
即下一层的都比上一层的小。
在插入树集的结点前要在创建对象的类中实现Comparable接口
树映射是一种特殊的树,树映射的结点存储关键字/值对
*常用方法
public boolean add(E o)向树集添加加节点
public void clear()删除树集中的所有节点
public void contains(Object o)如果树集中有包含参数指定的对象。
public E first()返回树集中的第一个节点中的数据(最小的节点)
public E last()返回最后一个节点中的数据(最大的节点)
public isEmpty()判断是否是空树集,如果树集不含任何节点,该方法返回true
public boolean remove(Object o)删除树集中的存储参数指定的对象的最小节点
public int size()
二.学习代码
package com.jihekuangjia;
//创建一个员工的类
public class YuanGong {
//定义名字性别属性
private String name;
private String sex;
public YuanGong() {}
public YuanGong(String name, String sex) {
super();
this.name = name;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
测试代码
package com.jihekuangjia;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
//创建一个测试类
public class LianXi {
public static void main(String[] args) {
//创建员工对象赋值
YuanGong ren1 = new YuanGong("李明","男");
YuanGong ren2 = new YuanGong("赵明","女");
YuanGong ren3 = new YuanGong("钱明","男");
YuanGong ren4 = new YuanGong("孙明","女");
//创建键值对的集合对象
Map<String,YuanGong> rens = new HashMap<String,YuanGong>();
//把英文名与员工对象按照键值对的方式存在HashMap
rens.put("Jack", ren1);
rens.put("lisa", ren2);
rens.put("kangkang", ren3);
rens.put("rose", ren4);
//获得键的集合
Set ren = rens.keySet();
//增强for循环输出英文名对应的名字和性别
for(String r:ren) {
YuanGong r1 =rens.get(r);
System.out.println(r+"对应的学生姓名是:"+r1.getName()+"性别是:"+r1.getSex());
}
}
}