• java基础教程-容器(三)


    三、容器(图很重要)存储多个数据,想存多少存多少 

    3.1 简介

         

      左边是一个一个往里装,右边map是一对一对往里装。collection接口是set和list接口的父类,set没有顺序,不可以重复;list有顺序,可以重复(可以equals)。Map定义了“键(key)-值(value)”存储,成对存储。

      Collection类中,在调用remove、contains方法时,需要比较对象是否相等,这会涉及到object类中的equals方法和hashcode方法,对于自定义的类型,需要重写equals和hashcode方法以实现自定义对象的相等规则。例:

         

      必学的六个接口:collection、set、list、map、iterator(遍历元素),comparable

    3.2增强的for循环(JDK1.5以后)

      缺点:

        数组:不能方便的访问下标;

        集合:与iterator相比,不能方便的删除集合中的内容。所以除了简单的遍历读数据外,一般不用。

    import java.util.*;
    
    public class EnhancedFor {
    
    public static void main(String[] args) {
    
    int[] arr = {1, 2, 3, 4, 5};
    
    for(int i : arr) {
    
    System.out.println(i);
    
    }
    
    Collection c = new ArrayList();
    
    c.add(new String("aaa"));
    
    c.add(new String("bbb"));
    
    c.add(new String("ccc"));
    
    for(Object o : c) {
    
    System.out.println(o);
    
    }
    
    }
    
    }

    3.3Iterator接口(遍历一个collection的方式)

      含有hasNext(),next(),remove()方法

         

    3.4 Set接口

      Set接口是collection的子接口,实现set的容器类中的元素没有顺序,而且不可能重复。Set类中有HashSet()和TreeSet()等

         

      sn.retainAll(s1)//sn与s1求交集

    3.5 List接口

      List接口也是collection的子接口,list接口的容器类中的元素是有顺序的,而且可以重复。arrayList(),linkedList()

      Object set(int index,object element)//object返回值为以前的对象

        

        

        

         

    3.6 comparable

      import java.lang.cmparable  里面只有一个方法 public int compareTo(object obj)

         

    3.7 Map接口

      实现Map接口的类用来存储键-值对,键是用来做索引的,所以不能重复(指相互间间equals,因为equals效率较低,所以用hashcode比较,所以重写equals必须重写hashcode)

         

      Map接口(JDK1.5之后满足下面的方法),本来map的方法必须是针对对象的,对于数据必须转换成对象,现在可以直接用1,这是因为JDK1.5支持自动将基础类型转换成对象(打包)和自动将对象转换成基础类型(解包)过程

    3.8 泛型

      List<String> c = new ArrayList<String>();//<String>只能装string类型(在API文档中,只要后面跟着<E>的都可以跟<>,这就叫泛型)

      Map<String, Integer> m1 = new HashMap<String , Integer>();//Map里面装了一对东西,所以使用两个类型。

      碰到集合时尽量用泛型,增强程序的可读性,即在定义集合时,定义集合中对象的类型。

    3.9 List、Set、Map、数组之间的转换

    3.9.1 List和Set转换

      1、List->Set

    Set set = new HashSet(new ArrayList())

      2、Set->List

    List list = new ArrayList(new HashSet())

    3.9.2 List和数组转换

      1、List->数组

    List list = Arrays.asList(1,2)
    
    int [] res = (int[])list.toArray(new int[list.size()])

      2、数组->List

    List list = Arrays.asList(1,2,3,4)

    3.9.3 Set和数组转换

      1、Set->数组

    Set set = new HashSet()
    List list = new ArrayList(set)
    
    int [] res = (int[])list.toArray(new int[list.size()])

      2、数组->Set

    Set set = new HashSet(Arrays.asList(1,2,3,4)) //通过List过渡

    3.9.4 Map的相关操作

    Map map = new HashMap();   
    map.put("1", "a");   
    map.put('2', 'b');   
    map.put('3', 'c');   
    
    System.out.println(map.keySet());   // 输出所有的key值
    
    System.out.println(map.values());    // 输出所有的value
    
    List list = new ArrayList(map.values());   // 将map的值转化为List   
    
    Set set = new HashSet(map.values());    // 将map的值转化为Set   
  • 相关阅读:
    字符数组+数组复习
    C语言博客作业05-指针
    C语言博客作业04 数组
    C语言博客作业03 函数
    Java与C# socket通信
    JDBC复制数据库(sqlite)
    mysql Connector/net不能更新或删除(转载)
    MATLAB回归、插值、逼近、拟合【转载】
    前端请求RestController发送数据方法汇总
    elementUI el-input 输入框 设置高度和宽度
  • 原文地址:https://www.cnblogs.com/likailiche/p/5131982.html
Copyright © 2020-2023  润新知