java基础-多态、集合

本文介绍了Java中的多态概念,包括多态的语法格式、满足的条件及其好处。此外,还详细讲解了集合框架,如Collection、List接口、Set接口以及Map集合的特点和常用方法。特别地,提到了迭代器在取出集合元素中的作用,以及各种集合子类如HashSet、LinkedHashSet和TreeSet的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多态

多态语法格式

父类类名 引用名称 =new 子类类名();
Vehicle c=new car();
注意:当时多态是,该引用类型只能访问父类中的属性和方法,但是优先访问子类重写以后的方法
多态:将多个对象调用同一个方法,得到不同的结构

满足条件:
• 子类必须继承父类
• 子类重写父类方法
• 父类类名 引用名称 =new 子类类名(); 
多态的好处:

减少代码的冗余性

多态中的两种类型转换

向上转型:自动类型转换,构成多态
• 父类类型 引用名称=New 子类类名();
• 当时多态时,该用用名称只能访问父类中的属性和方法,但是优先访问子类重写以后的方法

向下转型,也叫强制类型转换:
•当是多态时,并且访问子类独有的属性和方法,则必须进行向下转型
• 当进行向下转型时,建议先进行判断,当合法则在转为对应的类型,则使用instanceof关键词

Collection

在这里插入图片描述

  • 集合是java中提供的一种容器,可以用来存储多个数据
  • 数组的长度是固定的。集合的长度是可变的。
  • 数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。
collection常用方法(list set通用):
* public boolean add(E e):  把给定的对象添加到当前集合中 。
* public void clear() :清空集合中所有的元素。
* public boolean remove(E e): 把给定的对象在当前集合中删除。
* public boolean contains(E e): 判断当前集合中是否包含给定的对象。
* public boolean isEmpty(): 判断当前集合是否为空。
* public int size(): 返回集合中元素的个数。
* public Object[] toArray(): 把集合中的元素,存储到数组中。

迭代器(Iterator)

Collection集合包含vector,ArrayList,LinkedList等,取出元素的方式都不一样这时候就需要迭代器取出
Iterator概念:在取出元素之前要判断集合中有没有元素,如果有,就把这个元素取出来,继续判断,还有继续取,直到全部取出,这种取出方式称为迭代

常用两个方法:
boolean hasNext()      E next()
//遍历
        Iterator<String> it = collection.iterator();//获取迭代器的实现类对象(多态)
        
        while(it.hasNext()) {
            System.out.println(it.next());
        }
List接口
  • 有序的集合,存储元素和取出顺序一致
  • 有索引,包含了一些带索引的方法
  • 允许存储重复元素
List接口中带所有的方法(特有)
public void add(int index,E element);//将指定的元素添加到改集合中的指定位置
public E get(int index);//返回集合中钉钉位置的元素
public E remove(int index);//移除列表中指定位置的元素,返回被移除的元素
public E set(int index,E element);//指定元素替换集合中指定位置的元素返回值的更新前的元素
Set接口
  • 不允许存储重复元素
  • 没有索引,没有带索引的方法,不能使用普通for循环遍历

常用方法:

TreeSet中常用的方法:

boolean add(E e):添加一个元素,如果set中不存在该元素

boolean addAll(Collection<? extends E> c):向set添加集合

E ceiling(E e):返回大于等于给定元素的最小元素,没有返回null

void clear():移除所有元素

Object clone():浅拷贝集合

boolean contains(Object o):判断set是否包含某元素

E first():返回set的第一个元素

E last():返回set的最后一个元素

E floor(E e):返回给定元素的上一元素

E higher(E e):返回比给定元素大的最小元素

E lower(E e):返回比给定元素小的最大元素

SortedSet<E> headSet(E toElement):返回不包含给定元素前面的所有元素

SortedSet<E> tailSet(E fromElement):返回大于等于给定元素后面的所有元素

SortedSet<E> subSet(E fromElement, E toElement):返回开始/结束元素之间的所有元素集合,[from, to)

NavigableSet<E> headSet(E toElement, boolean inclusive):返回比给定元素小的元素集合,true表示小于等于

NavigableSet<E> tailSet(E fromElement, boolean inclusive):返回比给定元素大的元素集合,true表示大于等于

boolean isEmpty():判断set是否为空

Iterator<E> iterator():返回一个升序的set迭代器

E pollFirst():移除第一个元素,返回null如果set为空

E pollLast():移除最后一个元素,返回null如果set为空

boolean remove(Object o):移除指定元素

int size():返回集合元素数目

常用实现类
HashSet

  • 有set接口的两个特点
  • 是一个无序集合 底层是哈希表结构

LinkedHashSet

  • 底层是哈希表(数组+链表+红黑色)+链表,多了一个链表(记录元素的存储顺序),保证元素有序
  • 有序,不允许重复

TreeSet

Map集合

Collection和Map的区别:

  • 单列和双列
  • map包含两个值(key,value)
  • key和value的数据类型可以相同也可以不同,key不允许重复,value可以
    map集合的两个子集,HashMap,LinkedHahMap

常用方法

public V put(K key, V value) : 把指定的键与指定的值添加到Map集合中。
public V remove(Object key) : 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
public V get(Object key) 根据指定的键,在Map集合中获取对应的值。
public Set keySet() : 获取Map集合中所有的键,存储到Set集合中。
public Set<Map.Entry<K,V>> entrySet() : 获取到Map集合中所有的键值对对象的集合(Set集合)

map循环取值的两种方法:
Map.enrtySet:

        Map<String, Integer> map = new HashMap<String, Integer>();
        map.put("赵丽颖", 18);
        map.put("李易峰", 20);
        map.put("迪丽沙巴", 15);
        //增强for循环循环方法
        for (Map.Entry<String, Integer> Entry : map.entrySet()) {
          String Key=Entry.getKey();
          Integer Value=Entry.getValue();
          System.out.println(Key+Value);
        }
        //迭代器循环方法
//        Set<Map.Entry<String, Integer>> set = map.entrySet();
//        Iterator<Map.Entry<String, Integer>> it = set.iterator();
//        while (it.hasNext()) {
//            Map.Entry<String, Integer> entry = it.next();
//            String key = entry.getKey();
//            Integer value = entry.getValue();
//            System.out.println(key + value);
//        }

map.Keyset:

   Map<String, Integer> map = new HashMap<String, Integer>();
        map.put("赵丽颖", 18);
        map.put("李易峰", 20);
        map.put("迪丽沙巴", 15);
               //迭代器循环
                Set<String>set=map.keySet();
                Iterator<String>it=set.iterator();
                while (it.hasNext()){
                    String key=it.next();
                    Integer Value=map.get(key);
                    System.out.println(key+Value);
                }
                //增强for
                 for (String key : map.keySet()) {
		            Integer value = map.get(key);
		            System.out.println(key + value);
         }                  
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值