java中的集合类_Collection_Map_List_Set

数组的长度是固定的,用来存放基本数据类型
集合的长度是可变的,用来存放对象的引用
本文内容包括:
接口:、List、Set、、Map、Map.Entry、
类:、、、、、
迭代器及相关接口(、)、比较器及相关接口(、)
先看继承关系:
图片来源在《深入浅出java程序设计》 朱颢东 张志峰等编著
上两张图中 , 虚线框表示接口,实线框表示类,抽象类用斜体表示,虚线表示实现接口 , 实线表示继承关系 。
上两张图中将继承实现表示的很详细 , 下面的图更简单明了一点 。
图片来源《java从入门到精通》明日学院 编著
还有就是这
public interface Collection extends Iterable
接口继承了接口
接口是集合层次结构的顶层接口,定义了集合、链表等所有属于集合的类都应该具有的通用方法,如添加、删除、遍历等,这些方法和功能都需要在其实现类中加以实现 。接口Set只是简单地继承了接口 , 其中并没有声明任何新的成员方法 。接口继承了Set接口,并增加了一些与排序有关的成员方法 。接口List在继承 接口的基础上 , 还增加了几个与顺序有关的成员方法 。抽象类、、和st分别实现了部分接口或抽象类中的成员方法,以减轻子类需要实现接口或抽象类中所有成员方法的负担 。
再来看看个接口、类的方法(若接口中的方法已在其父接口中出现过,子接口就不重复列出了)
============================================================================================
迭代器相关内容
1.接口
实现了接口的类可以支持for each循环,是基于实现的
关于和可以去这看看 Java中的与详解
2.接口
下面使用了三种方法遍历集合(对和的运用):
public class demo1 {public static void main(String[] args) {A a1 = new A();A a2 = new A();A a3 = new A();List l = new ArrayList<>();l.add(a1);l.add(a2);l.add(a3);// 1 foreach循环for (A a : l) {a.myPrint();}// 2迭代器Iterator it = l.iterator();// 如果在这不加泛型, 那么在使用it.next()前要强制类型转换一下,it.next()返回的默认为Object类型while(it.hasNext()){it.next().myPrint();}// 3 forEach()方法Consumer action = new MyConsumer();l.forEach(action);}}class A {private int a;public void myPrint() {System.out.println("hello");}}class MyConsumer implements Consumer{@Overridepublic void accept(A a) {a.myPrint();}}
============================================================================================
3.接口4.List接口5.类
在大量插入元素前,可以使用()方法主动增加对象的容量,减少容量递增式再分配的数量,从而提高插入效率 。
删除元素时容量不会自动减小,可以使用()方法 。
6.类
技巧:实例化List接口对象时,建议优先使用,只有在插入和删除操作特别频繁时,才使用 。
7.Set接口8.类9.接口
============================================================================================
比较器相关内容
接口接口
接口中两个的方法
方法:如果obj也是一个比较器,并且与此比较器有相同的排序,则返回true,否则返回false 。
如果希望用树集或树图管理某类的对象 , 就要使该类实现接口或者重写一个比较器类实现接口并将比较器类的对象传给集合构造方法
// 法一: 实现Comparable接口,重写compareTo方法package pc;import java.util.TreeSet;public class Student implements Comparable{private String sno;private String name;public Student(String sno, String name) {this.sno = sno;this.name = name;}// 重写compareTo方法@Overridepublic int compareTo(Student o) {return this.sno.compareTo(o.sno);}public static void main(String[] args) {Student s1 = new Student("201", "jack");Student s2 = new Student("202", "peter");TreeSet l = new TreeSet<>();l.add(s1);l.add(s2);}}
// 法二: 重写比较类实现Comparator接口,并重写compare方法package pc;import java.util.Comparator;import java.util.TreeSet;public class Student2 {private String sno;private String name;public Student2(String sno, String name) {this.sno = sno;this.name = name;}public String getSno() {return sno;}public void setSno(String sno) {this.sno = sno;}public String getName() {return name;}public void setName(String name) {this.name = name;}public static void main(String[] args) {Student2 s1 = new Student2("201", "jack");Student2 s2 = new Student2("202", "peter");MyComparator myComparator = new MyComparator();TreeSet l = new TreeSet<>(myComparator);l.add(s1);l.add(s2);}}// 重写比较类实现Comparator接口,并重写compare方法class MyComparator implements Comparator{@Overridepublic int compare(Student2 o1, Student2 o2) {return o1.getSno().compareTo(o2.getSno());}}
============================================================================================
12.类13.Map接口14.Map.Entry接口
//对Map进行遍历Map map = new HashMap();for (Map.Entry entry : map.entrySet()) {System.out.println("Key = " + entry.getKey() + "Value = "http://www.kingceram.com/post/+ entry.getValue());}
【java中的集合类_Collection_Map_List_Set】15.类16.接口17.类
本文参考源码、jdk api文档、《深入浅出java程序设计》朱颢东 张志峰等编著、《java从入门到精通》明日学院 编著、《java程序设计与计算思维》 赵军 吴灿铭编著