java基础:java容器的学习

java容器也称为java 集合框架,里面除了存储对象的容器之外,还提供了一套用于处理和操作容器里面的对象的一套工具类。

  • List:列表,是一个接口。它的实现类常用的有LinkedList、ArrayList和Vector。

  • set:集合,与数学中的集合性质相似。

  • map:是一类重要的数据结构。类似于数学中的函数,key对应自变量x、value对应因变量y、散列函数对应f

注:Collections 类也是一个非常有用的类,位于 java.util 包中,提供的 sort() 方法可以对字符或数字列表进行排序。

1,LinkedList是一种采用双向链表实现的列表,适用于实现顺序访问,删除与增加数据。

首先了解一下linkedlist双向链表的数据结构模型:

每一个结点的内容分为三部分:与前驱结点相连的指针,当前结点值,与后继结点相连的指针。

import java.util.LinkedList;
​
public class test{
    public static void main(String[] args){
        /*创建linkedList双向链表的方法*/
        LinkedList<String/*数据类型*/> list/*名称*/ = new LinkedList<String>();
        /*添加元素,正序添加*/
        list.add("huang");
        list.add("lin");
        list.add("chun");
        /*正序输出链表元素*/
        System.out.println(list);
        /*添加表首元素*/
        list.addFirst("is");
        System.out.println(list);
        /*添加表尾元素*/
        list.addLast("ya");
        System.out.println(list);
        /*添加指定节点位置元素,0为表首,依次向后*/
        list.add(int index,String);
        /*删除表首元素*/
        list.removeFirst();
        System.out.println(list);
        /*删除表尾元素*/
        list.removeLast();
        System.out.println(list);
        /*清空链表*/
        list.clear();
        /*判断链表中是否含有某元素*/
        list.contains(String);
        /*获取链表首部节点值*/
        System.out.println(list.getFirst());
        /*获取链表尾部结点值*/
        System.out.println(list.getLast());
        /*利用size方法迭代链表元素*/
        for(int size = list.size(), int i=0; i< size; i++){
            System.out.println(list.get(i));
        }
        /*利用for-each方法迭代链表元素*/
        for(String i : list){
            System.out.println(i);
        }
    }
}

2,ArrayList是可以动态修改的数组,是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。

import java.util.ArrayList;
​
public class test{
    /*创建ArrayList的方法,其中E是泛型数据类型,只能为引用数据类型,例如String类型*/
    ArrayList<E> list = new ArrayList<E>();
    
    public static void mian(String[] args){
        ArrayList<String> list = new AraayList<String>();
        
        list.add("wo");
        list.add("shi");
        list,add("huang xian sen");
        System.out.println(list);
        /*获取指定节点位置的值*/
        System.out,println(list.get(int index));
        /*修改指定位置的节点值*/
        list.set(int index,String);
        /*删除指定位置的节点*/
        list.remove(int index);
        /*获取数组长度*/
        System.out.println(list.size());
        /*利用size方法迭代数组*/
        for(int i = 0;i< list.size(); i++;){
            System.out.println(list.get(i));
        }
        /*利用for-each方法迭代数组*/
        for(String i : list){
            System.out.println(i);
        }
    }
    
}

3,HashSet基于 HashMap 来实现的,是一个不允许有重复元素的集合。

import java.util.HashSet;
​
public class test{
    public static void main(String[] args){
        HashSet<String> set = new HashSet<>();
        
        set.add("12");
        set.add("34");
        set.add("567");
        /*重复添加同一元素报错*/
        set.add("12");
        System.out.print(set);
        /*根据元素内容删除指定元素*/
        set.remove("34");
        /*清空集合*/
        set.clear();
        /*计算元素个数*/
        System.out.println(set.size());
        /*利用for-each迭代集合元素*/
        for(String i : set){
            System.out.println(i);
        }
    }
}

4,HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。

import java.util.HashMap;
​
public class test{
    /*创建HashMap时指定key与hash值对应,他们的数据类型可以相同也可以不同*/
    HashMap<E1, E2> map = new HashMap<E1, E2>();
    
    public static void mian(String[] args){
        
        HashMap<Integer, String> map = new HashMap<Integer, String>();
        /*增加键值对*/
        map.put(1,"java");
        map.put(2,"c");
        map.put(3,"c++");
        Sytem.out.println(map);
        /*计算键值对的个数*/
        int Size = map.size();
        System.out.println(map.get(1));
        /*根据key值删除指定键值对*/
        map.remove(3);
        /*清空map*/
        map.clear();
        /*利用for-each迭代map*/
        /*如果你只想获取key那就使用keyset方法,然后使用get方法获取哈希值,你也可以直接使用values方法直接按正序获取哈希值*/
        for(integer i : map.keySet()){
            System.out.println(i+map.get(i));
        }
    }
}

注:java容器中的集合框架许多方法都是互通的,互助学习更加高效。

5,java迭代器Iterator就是对for-each迭代的封装版,但是其中多了许多高级的数据操作功能:

import java.util.Iterator;
import java.util.ArrayList;
​
public class test{
    public static void main(String[] args){
        ArrayList<int> list = new ArrayList<>();
        
        list.add(100);
        list.add(67);
        list.add(54);
        
        /*创建指定容器的迭代器*/
        Iterator<int> it = list.Iterator();
        /*利用hashNext方法进行迭代*/
        /*hashNext主要的动能就是判断当前的选取的数据类型,不为null的选中后将指针指向后继元素,直到遇到null为止结束*/
        while(it.hashNext()){
            System.out.println(it.next());
        }
        
        /*跌代过程加入删除操作*/
        while(it.hashNext()){
            if(it.next<= 60){
                it.remove();
            }
        }
        System.out.println(list);
    }
}

注:关于这个方面的其他知识扩展可以在CSDN与菜鸟等网站查找阅览。

6,实例练习:利用本章节的知识将以下成绩表单对你选取的java容器进行数据操纵的操作:

林一49
刘二31
张三67
李四75
王五64
赵六87
/*首先分析:这个表单具有对应关系,所以我们采取HashMap这种java容器,利用for-each对不及格删除*/
import java.util.HashMap;
​
public class test{
    public static void main(String[] args){
        
        HashMap<String, int> map = new HashMap<String, int>();
        
        map.put("林一",49);
        map.put("刘二",31);
        map.put("张三",67);
        map.put("李四",75);
        map.put("王五",64);
        map.put("赵六",87);
        
       System.out.println("及格学生名单如下:");
       for(String i : map.keySet()){
           if(map.get(i)< 60){
               map.remove(i);
           }
           Syetem.out.println(i+":"+map.get(i));
       }
        
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ForestSpringH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值