一.集合类:专门用来存储java类的对象,数组长度可变,存储的是引用型的元素对象,之所以可以存储基本类型数据是因为系统的自动装箱功能
二.容器关系图
三.Coolection接口是构造集合框架的基础,声明了所有集合类的核心方法
1 import java.util.ArrayList; 2 //removeAll移除指定集合(交集) 3 public class Demo_removeAll 4 { 5 public static void main(String[] args) 6 { 7 ArrayList a=new ArrayList(); 8 a.add("小"); 9 a.add("机");10 a.add("灵");11 a.add("鬼");12 13 ArrayList b=new ArrayList();14 b.add("小");15 16 a.removeAll(b);17 System.out.println(a);18 }19 }
四.实现list接口的类
4.1.1 ArrayList(数组列表),可以把ArrayList看做一个长度可变的数组
4.1.2 add方法-->添加元素
get方法-->获取元素
size()-->元素个数
4.1.3 ArrayList集合底层是用数组来保存元素的,增加或删除元素,会导致创建新的数组,效率低,不适合做大量操作
1 import java.util.ArrayList; 2 3 public class Test14 4 { 5 public static void main(String[] args) 6 { 7 //定义一个数组列表 8 ArrayList array=new ArrayList(); 9 //使用add方法添加三个字符串值进去10 array.add("不要为了合群而合群");11 array.add("那纯碎是浪费你的青春");12 array.add("努力最大的意义我终于明白了");13 //使用get方法获取数组列表中的元素14 String s=(String) array.get(0);15 String s1=(String) array.get(1);16 String s2=(String) array.get(2);17 18 System.out.println(s);19 System.out.println(s1);20 System.out.println(s2);21 System.out.println("********************");22 23 for(int i=0;i
4.2.1 LInkedLIst(链表)集合
引用的方式来链接所有元素,插入新元素-->修改元素之间的这种引用关系(就是对象地址)
五.实现set接口的类
5.1 hashCode类:根据对象哈希值来确定元素在集合中的位置
5.2 hashCode无序不可重复
5.3 添加对象时,先调用对象hashCode方法确定存储位置,再调用equals方法确保没有该位置重复元素(简单的理解就是不能添加相同引用对象,因为地址相同)
1 import java.util.HashSet; 2 3 public class Test15 4 { 5 public static void main(String[] args) 6 { 7 HashSet set=new HashSet();//创建HashSet对象 8 set.add(new Person("张三"));//传入引用对象元素 9 set.add(new Person("李四"));10 set.add(new Person("张三"));//元素值虽然相同,但比较的是地址11 12 System.out.println(set);//调用toString方法,set是无序的,不可重复13 14 System.out.println("*************************");15 16 set.clear();//清空元素17 18 Person p=new Person("张三");19 System.out.println(set.add(p));//若成功插入显示true20 System.out.println(set);21 //set添加新的元素时,会检查set中的原有元素是否和插入新元素equals22 //若有则不能添加,返回false23 System.out.println(set.add(p));24 25 System.out.println("**************");26 set.clear();27 String s1="小冰晶";28 String s2="小冰晶";29 System.out.println("hash code:"+s1.equals(s2));//证明了set接口是不重复30 System.out.println(set.add(s1));31 System.out.println(set);32 System.out.println(set.add(s2));//s2和s1地址相等33 }34 }35 36 class Person37 {38 String name;//姓名属性39 //构造方法初始化值40 public Person(String name)41 {42 this.name=name;43 }44 //重写toString方法45 public String toString()46 {47 return name;48 }49 }
六.Iterator迭代器
1 import java.util.HashSet; 2 import java.util.Iterator; 3 4 public class Demo_Iterator 5 { 6 public static void main(String[] args) 7 { 8 //创建HashSet对象 9 HashSet it=new HashSet();10 //添加元素对象11 it.add("学");12 it.add("习");13 it.add("使");14 it.add("我");15 it.add("快");16 it.add("乐");17 //迭代器管理获得迭代对象18 Iterator lo=(Iterator) it.iterator();19 //循环遍历20 while(lo.hasNext())//用游标判断是否有下一个元素21 {22 String str=(String)lo.next();23 System.out.print(str+" ");24 }25 System.out.println();26 System.out.println("*******************");27 28 for(Iterator in=it.iterator();in.hasNext();)29 {30 String str1=(String)in.next();31 System.out.print(str1+" ");32 }33 }34 }
七.映射接口Map-->给定一个关键字得到它的值,可理解为数学中的函数中的自变量和因变量的关系
7.1 Map接口不能出现重复的key
7.2 两个常用实现Map接口的类:HashMap(散列表实现)和TreeMap(二叉树原理)
1 /** 2 * void put(Object key,Object Value)指定键和与其相对应的映射值 3 * Set KeySet返回此映射中包含的键的Set视图 4 * Object get(Object key)放入键得到映射的值 5 */ 6 import java.util.HashMap; 7 import java.util.Iterator; 8 import java.util.Map; 9 import java.util.Set;10 11 public class Demo_Map12 {13 public static void main(String[] args) 14 {15 Map map=new HashMap();//创建Map接口对象-->父类引用指向子类对象16 map.put("巫妖果子", "周俊明");//加入键值和对应的值17 map.put("叩骨", "吴梦婷");//加入键值和对应的值18 map.put("哒姐姐", "肖群");//加入键值和对应的值19 20 System.out.println(map);21 Set set=map.keySet();//获得存储Map中的所有键的set集合22 23 for(Iterator it=set.iterator();it.hasNext();)//使用迭代器遍历键24 {25 String key=(String)it.next();//得到键26 String value=(String)map.get(key);//输入键得到相应值27 System.out.println(key+"="+value);28 }29 }30 }
八.TreeMap
1 import java.util.Map; 2 import java.util.TreeMap; 3 /** 4 * TreeMap的特点: 5 * TreeMap底层采用的是二叉树算法,可以实现自动对键进行排序 6 * TreeMap可以保证键的顺序 7 * @author 罗摩衔那 8 * 9 */10 public class Demo_TreeMap11 {12 public static void main(String[] args) 13 {14 Mapmap=new TreeMap<>();15 map.put("001","小龙女");16 map.put("002","独孤求败");17 map.put("003","万古长空-妖帝空");18 map.put("004","一朝风月-妖帝月"); 19 System.out.println(map);20 }21 }