1、集合框架
Collection接口
Collection接口,定义所有单例集合共性的方法,下面有两个子接口,一个是List接口,一个是Set接口。
List接口
List接口,其下面主要实现类有Vector集合,ArrayList集合,LinkedList集合,底层实现方式有数组,也有链表,它有如下特点: (1)有序的集合,即存储和取出元素的顺序相同 (2)允许存储重复的元素 (3)有索引,可以使用普通的for循环遍历
Set接口
Set接口,其下面主要的实现类有TreeSet集合,HashSet集合,还有LinkedHashSet集合,前两者是无序的集合,最后一个是有序的集合,它有如下特点: (1)不允许存储重复的元素 (2)没有索引,不能使用普通的for循环遍历
Collection接口中常用方法
collection集合中共性的方法,可以在java.util.Collection中查看,一共有如下7个,针对不同的实现类,都可以使用这7个方法。
public boolean add(E e):添加一个元素
public void clear():清空集合中所有的元素
public boolean remove(E e):移除集合中指定的元素
public boolean contains(E e):检查集合中是否包含指定的对象
public boolean isEmpty():判断集合是否为空
public void size():判断集合中元素的个数
public Object[] toArray():把集合元素存储到数组中
案例
//增强for循环输出 for (Object obj : list){ Student test = (Student) obj; System.out.println("姓名:"+test.getName()); } //迭代器的使用iterator Iterator iterator = list.iterator(); while (iterator.hasNext()){ Student next = (Student)iterator.next();//一定要记得类型转换,使用泛型后就不需要强转 System.out.println("id"+next.getId()+",姓名:"+next.getName()+",工资:"+next.getMoney()); }
ArrayList 和LinkedList的区别和共同点
共同点:都继承于collection,有着共同的一些方法,比如add、size、remove等等
ArrayList:有序不重复类似于排队,适合查询
LinkedList:有序可重复类似于链子。适合添加删除
Map集合
Map<String,String> mp = new HashMap<String,String>(); mp.put("zhangsan","张三"); mp.put("lisi","李四"); mp.put("wangwu","王五"); mp.put("zhaoliu","赵六"); System.out.println(mp.size()); //通过key值返回value值,注意返回的是Object,需要强转 String name = mp.get("zhaoliu"); System.out.println(name); //找不到就返回null String aaa = mp.get("aa"); System.out.println(aaa); //判断是否有某个key用containsKey方法 System.out.println("是否有:"+mp.containsKey("zhangsan")); System.out.println("是否有:"+mp.containsKey("wenyu")); //删除,会把键值对都删除 mp.remove("zhangsan"); System.out.println("是否有:"+mp.containsKey("zhangsan")); //返回键、值、键值对的方法 System.out.println(mp.keySet()); System.out.println(mp.values()); System.out.println(mp); System.out.println("============================"); //遍历Map集合 //1.增强for循环遍历 for (String key : mp.keySet()){//获取Map里面每一个key String value = mp.get(key);//根据key遍历value System.out.println(key+"------"+value); } System.out.println("============================"); //2.迭代器Interator来遍历Map集合 Iterator<String> iterator = mp.keySet().iterator(); while (iterator.hasNext()){ String key = iterator.next();//获取Map里面每一个key String value = mp.get(key);//根据key遍历value System.out.println(key+"------"+value); } System.out.println("============================"); //3.直接遍历Map Set<Map.Entry<String,String>> set = mp.entrySet(); for (Map.Entry<String,String> me : set){ String key = me.getKey(); String value = me.getValue(); System.out.println(key+"------"+value); }
Collections工具类
//sort方法进行元素升序排列 Collections.sort(list); for (String z : list){ System.out.println(z); } System.out.println("##########################"); //max\min方法进行元素升序排列 System.out.println("max:"+Collections.max(list)); System.out.println("max:"+Collections.min(list)); //binarySearch方法查看元素是否存在 System.out.println(Collections.binarySearch(list,"fee"));//有的话返回元素下标 System.out.println("##########################"); //reverse方法反转类容 Collections.reverse(list); for (String z : list){ System.out.println(z); }
Collections自定义比较
//1、先实现 Comparable接口 public class Student implements Comparable{ //2、重写compareTo接口 public int compareTo(Object o) { //自定义比较规则 例如:如下 Student st = (Student)o; if (this.no==st.no){ return 0; }else if(this.no>st.no){ return 1; }else if(this.no<st.no) { return -1; } }
枚举
//1、定义 public class Demo2 { //定义枚举内容 public enum leve{ 男,女 } } //2、应用 public class Demo2 { public sexa sex; public static void main(String[] args) { Student student = new Student(); student.sex = "男";//只能写男和女否则报错 } }
包装类
名称:除了char转成包装类名字变成Character ,和int变成Integer,其它都是首字母大写!比如Boolean
方法:
//1、xxxvalue:把包装类型转成基本类型 Integer i = new Integer(100); int iNum = i.intValue();//此时iNum有变成基本数据类型 //2、toSting:把基本类型变成字符串 //方法一 boolean i = true; String iNum = Boolear.toSting(i);//此时iNum有变成字符串 //方法二 String iNum = true+"" //会自动强转 //注意:下面方法Character 没有这个方法 //3、parsexxx():把字符串变为基本数据类型 注意:Character 没有这个方法 int num = Integer.parseint("36") //此时num有变成基本数据类型 //4、valueOf() 把基本类型转化成包装类 Integer i = Integer.valueOf(100); //此时i有变成包装数据类型 //boolean转换不是true的大小写字符统统算转成false //转换错误会报NumberFormatException错误
未完待续。。
个人笔记--也摘抄了来自个网站的资源和自己总结
感谢默默的陪伴