Java教程

韫钰的笔记 -- java高级特性--集合框架

本文主要是介绍韫钰的笔记 -- java高级特性--集合框架,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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个方法。

  1. public boolean add(E e):添加一个元素

  2. public void clear():清空集合中所有的元素

  3. public boolean remove(E e):移除集合中指定的元素

  4. public boolean contains(E e):检查集合中是否包含指定的对象

  5. public boolean isEmpty():判断集合是否为空

  6. public void size():判断集合中元素的个数

  7. 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错误

未完待续。。

                          个人笔记--也摘抄了来自个网站的资源和自己总结

                                              感谢默默的陪伴

这篇关于韫钰的笔记 -- java高级特性--集合框架的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!