使用IDEA学JAVA第六天

今天是寒假学JAVA第六天,主要学习了集合框架,希望大家认真学习。

一、集合框架

数组存储的缺点

1、数组一旦初始化后,其长度和类型就确定了;
2、数组中提供的方法有限、对于增删改等操作不方便,效率也不高
3、能够解决有序、可重复,但对于无序和不可重复的需求时,不能够满足

发展演变

当需要在Java程序中记录单个数据内容时,则声明一个变量即可;
当需要在Java程序中记录多个类型相同的数据内容时,则声明一个一维数组即可;
当需要在Java程序中记录多个类型不同的数据内容时,则创建一个对象即可;
当需要在Java程序中记录多个类型相同的对象数据时,则创建一个对象数组即可;
当需要在Java程序中记录多个类型不同的对象数据时,则准备一个集合即可;

1.集合框架

Java中集合框架的顶层框架是:java.util.Collection集合和java.util.Map集合。其中Collection集合中存取元素的基本单位是:单个元素。其中Map集合中存取元素的基本单位是:单对元素。
集合框架

2.Collection集合(重点)

常用方法

boolean add(E e) 添加对象
boolean contains(Object o) 判断是否包含指定对象
boolean remove (Object o) 从集合中删除对象
void clear(); 清空集合
int size(); 返回包含对象的个数
boolean isEmpty); 判断是否为空
Object[] toArray():- 将集合转换成数组 将数组转换成集合? Iterator iterator() -
遍历集合中的元素 Iterator对象称为选代器,主要用于遍历Collection集合中的元素 boolean
hasNext() 如果仍有元素可以迭代,则返回 true。
E.next() 返回迭代的下一个元素

注意:

  • 集合对象每次调用iterator()方法都得到一个全新的选代器对象,默认游标都在集合的第一个元素之前。
  • 使用foreach循环遍历集合元素﹣JDK1.5提供,可以迭代访问Collection和数组
  • 遍历时不需要获取Collection或数组的长度,也不需要使用索引访问
    本质上,底层也是调用iterator。
  • 格式:

for(要遍历的元素类型 遍历后自定义元素名称:要遍历的结构名称){ 返回迭代的下一个元素。
System.ou.println(遍历后自定义元素名称)}

练习代码如下:

public class CollectionTest {
    public static void main(String[] args) {
        //接口类型的引用指向实现的对象,形成多态
        Collection c = new ArrayList();
        System.out.println(c);
        boolean b = c.add("one");
        System.out.println("b = " + b);
        c.add(2);
        c.add(3.14);
        c.add("吴波");
        System.out.println(c);
        //判断是否包含对象
        b = c.contains("two");
        System.out.println("b = " + b);
        b = c.contains("one");
        System.out.println("b = " + b);
        //判断集合是否为空
        b = c.isEmpty();
        System.out.println("b = " + b);
        System.out.println("集合中的元素有:" + c);
        b = c.remove("one");
        System.out.println("b = " + b);
        System.out.println("集合中的元素有:" + c);
        System.out.println("=================");
        //将集合转换成数组
        Object[] objects = c.toArray();
        //遍历数组
        for(int i = 0; i < objects.length; i++){
            System.out.println(objects[i]);
        }
        //将数组转换成集合
        List<Object> objects1 = Arrays.asList(objects);
        System.out.println(objects1);
        //迭代器遍历集合中的元素
        Iterator it = objects1.iterator();
        while(it.hasNext()){
            //Object obj = it.next();
            //System.out.println(obj);
            System.out.println(it.next());
        }
        //增强for循环遍历
        System.out.println("===========");
        for(Object o:objects1){
            System.out.println(o);
        }
    }
}

3.List集合(重点)

基本概念

java.util.List集合是Collection集合的子集合,该集合中允许有重复的元素并且有先后放入次序。
该集合的主要实现类有:ArrayList类、LinkedList类、Stack类、Vector类。
其中ArrayList类的底层是采用动态数组进行数据管理的,支持下标访问,增删元素不方便。
其中LinkedList类的底层是采用双向链表进行数据管理的,访问不方便,增删元素方便。
其中Stack类的底层是采用动态数组进行数据管理的,该类主要用于描述一种具有后进先出特征的数据结构,叫做栈(last in first
out LIFO)。
其中Vector类的底层是采用动态数组进行数据管理的,该类与ArrayList类相比属于线程安全的类,效率比较低。

常用的方法
void add(int index,E element) 向集合中指定位置添加元素
boolean addAll(int index,Collectionc? extends> c) 向集合中添加所有元素
E get(int index) - 从集合中获取指定位置元素
E set(int index,E element)-
E remove(int index) - 删除指定位置的元素
List sublist(int fromIndex,int toIndex)😒.
注意:subList获取的List与原List占有相同的存储空间,对子List的操作会影响到原List。
作业:查询java.util.Stack类以及相关方法,实现将11、22、33、44、55依次入找并打印,查看栈顶元素并打印,然后依次出找并打印。
代码如下:

public class StackTset {
    public static void main(String[] args) {
        //创建一个新的堆栈实例(后进先出)
        Stack stack = new Stack();
        //将11,22,33,44,55入栈
        stack.push(11);
        stack.push(22);
        stack.push(33);
        stack.push(44);
        stack.push(55);
        //打印堆栈的内容
        System.out.println("堆栈为:" + stack);
        //查看栈顶元素并打印
        System.out.println("栈顶元素为:" + stack.peek());
        //依次出栈并打印
        System.out.println("--------------------");
        while(!stack.isEmpty()){
            System.out.println("出栈元素:" + stack.pop());
        }
    }
}
  • 27
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

微笑向阳~~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值