实现了Comparable接口, 重写了 int compareTo(Object o)方法, 每次添加元素时, 调用此方法和集合内的元素进行比较
自定义类时, 须要实现Comparable接口, 并在这个类中重写compareTo方法
绑定比较器 定制排序 class MyComparator implements Comparator<TreeSetBean2>{ public int compare(TreeSetBean2 o, TreeSetBean2 o2) { return o.age-o2.age; }}main方法中Set<TreeSetBean2> st = new TreeSet<TreeSetBean2>(new MyComparator());绑定比较器, 根据对象的number属性比较
重写compareTo方法 public int compareTo(Worker o) { if(this.age>o.age) { return -1; }else if(age<o.age) { return 1; }else { return 0; }}
本身控制条件,达到定制排序的一种方法
return (x<y) ? -1 ; ( (x==y) ? 0 ; 1) ;
Map接口实现类 key- value 若是value都是null,就变成List集合了
HashMap key部分也须要重写equals和hashCode方法 HashMap<String,Integer> h = new HashMap<String, Integer>();h.put("语文", 90); //{语文=90}键值对h.put("语文", 88); //键相等,会覆盖值h.put("数学", 87);h.put("英语", 85);Integer i = h.get("英语"); //根据key值获取value值int c = hm.size(); //集合大小Set<String> s = h.keySet(); //获取集合中全部键 [语文,数学,英语]Collection<Integer> c = h.values(); //获取全部value值 [88,87,85]Integer i2 = h.remove("语文"); //根据key值移除 键值对h.clear(); //清除全部键值对 boolean b = h.containsKey("数学"); //判断是否包含某个键boolean b1 = h.isEmpty(); //判断是否为空Set<Map.Entry<String, Integer>> se = h.entrySet();System.out.println(se);h.replace("数学",100);
遍历 Map集合中常见遍历方式 遍历存放key值的SetSet<String> ss = map.keySet();再遍历 遍历存放value值的CollectionCollection<String> c = map.values();再遍历 遍历存放键值对的SetSet<Map.Entry<String, String>> ms = 8mp2.entrySet();
TreeMap
Iterator迭代器
iterator()返回的是Collection元素进行迭代的 迭代器
*必须与Collection结合绑定才能使用
Iterator 方法 Collection c = new ArrayList( );c.add("abc");c.add("ooo");c.add("sss");//c.size( )=3Iterator i = c.iterator( );//*绑定while(i.hasNext( )) { //遍历期间不能用集合c直接操做 Object s = i.next( ); System.out.println(s);}
boolean hasNext( ); 检查集合中是否有元素须要遍历
Object next( ); 获取遍历到的当前元素
void remove( ); 将迭代器中返回的元素删除
ListIterator双向迭代器 只能遍历ListArrayList<String> a = new ArrayList<String>();a.add("a");a.add("b");a.add("c");ListIterator i = a.listIterator( ); //绑定while(i.hasNext( )) { //从前日后迭代 Object str = i.next(); System.out.println(str);}while(i.hasPrevious( )) { //从后往前迭代 Object str = i.previous(); System.out.println(str);}
泛型
类名<具体的类型> 变量 = new 类名<>( );
自定义泛型类和自定义泛型方法
格式: 常见的表示泛型的字母 E V T K class Books<T>{ private T date; // T 为自定义的类型 Books(T date){ this.date = date; } public T getDate( ) { return date; }}