简单聊一下EL表达式与单列集合

本文介绍了Java中的EL表达式以及List接口及其子类(ArrayList、LinkedList、Vector)的使用,包括它们的特点、API方法和示例。还提及了Stack作为栈结构的集合特性和操作。
摘要由CSDN通过智能技术生成

1.EL表达式

这里列举一些简单的例子,这个表达式不难理解,过一遍即可

<%
    //请求域
    request.setAttribute("name", "请求域");
    //会话域
    session.setAttribute("name", "会话域");
    //上下文域
    application.setAttribute("name", "上下文域");
%>

${requestScope.name}&nbsp;&nbsp;
${sessionScope.name}&nbsp;&nbsp;
${applicationScope.name}<hr/>
<p>算术表达式</p><br>
1+1=${1+1}&nbsp;&nbsp;10>9是${10>9}&nbsp;&nbsp;
<p>三元表达式:</p><br>
如果我超过18岁,说明我是个${22>18?"成年人":"小孩"}

2.List

1.list的特点

a.数据是有序的

b.每个数据都有索引

c.list的数据允许重复(set的数据不允许重复)

2.list的基本api

  public static void main(String[] args) {
        List food=new ArrayList();
        food.add("玉米");
        food.add("火腿");
        food.add("米饭");
        System.out.println("列表的所有数据是:"+food);
        System.out.println("列表的是第三个数据:"+food.get(2));
        System.out.println("替换米饭为粥:"+food.set(2,"粥"));
        System.out.println("移除粥:"+food.remove(2));
        System.out.println("列表的所有数据是:"+food);
        System.out.println("开始截取数据0-2:"+food.subList(0,2));
    }

3.ListIterator

这是一个迭代器,有点不同的是,这个迭代器是可以往前、往后双向迭代的

 public static void main(String[] args) {
        List food=new ArrayList();
        food.add("玉米");
        food.add("火腿");
        food.add("米饭");
        System.out.println(food);
        ListIterator<String> iterator=food.listIterator();
        System.out.println("迭代操作");
        while (iterator.hasNext()){
            String f=iterator.next();
            if("火腿".equals(f)){
                System.out.println("这次的数据是火腿:"+f);
                iterator.add("鸡腿");
                System.out.println("火腿后面加鸡腿");
            }
            if("米饭".equals(f)){
                iterator.remove();
            }
        }
        System.out.println(food);
        System.out.println("反向迭代");
        while (iterator.hasPrevious()){
            String f=iterator.previous();
            System.out.println(f);
        }
    }

 

4.ArrayList

ArrayList底层是数组,所以查询快,增删慢,而且一般中数据都是读多写少,所以ArrayList非常常用。

默认的数组大小容量是10,超出容量时一般按照1.5倍进行扩容。

5.LinkedList(双向链表)

LinkedList即是List派系下的实现类,也是Queue集合派系下的实现类,底层采用链表实现,查询慢,增删快。

   public static void main(String[] args) {
        LinkedList<String> list= new LinkedList<String>();
        list.add("揭阳");
        list.add("广州");
        list.add("佛山");
        System.out.println(list);
        System.out.println("第二个元素是:"+list.get(1));
        list.set(2,"长沙");
        System.out.println("第三个元素换为长沙:"+list.get(2));
        list.remove(2);
        System.out.println(list);
    }
[揭阳, 广州, 佛山]
第二个元素是:广州
第三个元素换为长沙:长沙
[揭阳, 广州]

 

   public static void main(String[] args) {
        LinkedList<String> list= new LinkedList<String>();
        list.addFirst("揭阳");
        list.addFirst("广州");
        list.addFirst("佛山");
        System.out.println("第一个元素是:"+list.getFirst());
        System.out.println("最后一个元素是:"+list.getLast());
        System.out.println(list);
        System.out.println("删除第一个元素:"+list.removeFirst());
        System.out.println("删除最后一个元素:"+list.removeLast());
        System.out.println(list);
    }
第一个元素是:佛山
最后一个元素是:揭阳
[佛山, 广州, 揭阳]
删除第一个元素:佛山
删除最后一个元素:揭阳
[广州]

6.Vector集合

a.vector底层是list,所以查询快增删慢。

b.初始化容量也是10,,扩容是实现之前的2倍。

c.线程安全,ArrayList线程不安全。

 public static void main(String[] args) {
        Vector<String> vector=new Vector();
        vector.add("num1");
        vector.add("num2");
        vector.addElement("num3");
        vector.addElement("num4");
        ListIterator<String> iterator=vector.listIterator();
        while (iterator.hasNext()){
            String element=iterator.next();
            System.out.println(element);
        }
    }
num1
num2
num3
num4

7.Stack集合

Stack是栈结构的集合,因此具有数据结构中栈的一般特性(后进先出)

   public static void main(String[] args) {
        Stack<String> stack=new Stack<>();
        stack.add("num1");
        stack.add("num2");
        stack.add("num3");
        System.out.println("stack的第二个元素"+stack.get(1));
        System.out.println("压栈操作:"+stack.push("num4"));
        for (String s : stack) {
            System.out.println(s);
        }
        System.out.println("出栈操作:"+stack.pop());
        System.out.println(stack);
    }
stack的第二个元素num2
压栈操作:num4
num1
num2
num3
num4
出栈操作:num4
[num1, num2, num3]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值