代码: /* * 使用LinkedList模拟队列和堆栈 * 自己写一个类,实现数据的堆栈和队列功能 * 让用户在main方法中,调用自己写的类 * 思想转换: * 自己写方法,调用JDK中的类,实现的 * 自己写方法,自己的方法中,封装了JDK中类的功能 * 调用者,用的是我们自己的方法 */ import java.util.*; //实现数据的堆栈和队列,类中封装LinkedList功能 class MyDate{ private LinkedList link = null; MyDate(){link = new LinkedList();} //提高一个添加对象的功能,其实调用LinkedList的add方法 public void add(Object obj){ link.add(obj); } //返回对象,实现先进先出 public Object get(int x){ return link.removeFirst(); } public Object get(){ return link.removeLast(); } public boolean isEmpty(){ return !link.isEmpty(); } }
public class LinkedListTest { public static void main(String[] args) { MyDate my = new MyDate(); my.add("abc1"); my.add("abc2"); my.add("abc3"); while(my.isEmpty()){//!link.isEmpty() System.out.println(my.get()); }
/* * TreeSet存储自定义对象 */ import java.util.*; public class TreeSetDemo1 { public static void main(String[] args) { /* String s1 = "bbc"; String s2 = "bbc"; //String类中,有一个方法,可以获取到字符串的字典顺序 int num =s1.compareTo(s2); System.out.println(num);*/
TreeSet ts = new TreeSet(); ts.add(new Person("lisi",20)); ts.add(new Person("zhangsan",22)); ts.add(new Person("lisa",30)); ts.add(new Person("xiaoqiao",18)); ts.add(new Person("daqiao",23)); Iterator it = ts.iterator(); while(it.hasNext()){ Person p = (Person)it.next(); System.out.println(p); } } }
HashSet类 HashSet类的特点 底层数据结构哈希表
HashSet本身没有功能,功能来自于HashMap
HashSet调用的是HashMap的功能
无序的
允许存储null
线程不安全,不同步,执行效率高
将姓名和年龄的人,视作同一个对象,不要存储了
//实现Comparable接口,让Person具备自然顺序 //自然顺序,我们自己定义的,比较姓名,姓名相同,比较年龄 public class Person implements Comparable{ private String name; private int age; public Person(String name,int age){ this.age = age; this.name = name; } //ts.add(new Person("lisi",20)); //ts.add(new Person("zhangsan",22)); public int compareTo(Object obj){ //this 后进来的, obj先进来的对象 Person p = (Person)obj; int num = this.name.compareTo(p.name); return num == 0 ? this.age - p.age : num; }