Java小记5

目录

集合

简介

List接口


在继续IO流之前,本周我们先补充一部分与集合相关的内容。

集合

简介

与集合有关的除了前面所涉及到的数组,还有Collection 和 Map,不过这两个是Java的根接口,这两个接口又包含了一些子接口或实现类。图 1 和图 2 分别为 Collection 和 Map 的子接口及其实现类。

图1-Collection接口基本结构

图2-Map接口基本结构

每个接口都有其对应的功能,如下表所示。 

接口记其作用
接口名称作    用
Iterator 接口集合的输出接口,主要用于遍历输出(即迭代访问)Collection 集合中的元素,Iterator 对象被称之为迭代器。迭代器接口是集合接口的父接口,实现类实现 Collection 时就必须实现 Iterator 接口。
Collection 接口是 List、Set 和 Queue 的父接口,是存放一组单值的最大接口。所谓的单值是指集合中的每个元素都是一个对象。一般很少直接使用此接口直接操作。
Queue 接口Queue 是 Java 提供的队列实现,有点类似于 List。
Dueue 接口是 Queue 的一个子接口,为双向队列。
List 接口是最常用的接口。是有序集合,允许有相同的元素。使用 List 能够精确地控制每个元素插入的位置,用户能够使用索引(元素在 List 中的位置,类似于数组下标)来访问 List 中的元素,与数组类似。
Set 接口不能包含重复的元素。
Map 接口是存放一对值的最大接口,即接口中的每个元素都是一对,以 key➡value 的形式保存。

 正如上表所述,List接口使用最多,故我们先学习List接口,其余的以后慢慢学。

List接口

List接口主要有两个常用的实现类:ArrayList 类和 LinkedList 类。常用方法如以下两表。

表 1 ArrayList类的常用方法
方法名称说明
E get(int index)获取此集合中指定索引位置的元素,E 为集合中元素的数据类型
int index(Object o)返回此集合中第一次出现指定元素的索引,如果此集合不包含该元
素,则返回 0
int lastIndexOf(Object o)返回此集合中最后一次出现指定元素的索引,如果此集合不包含该
元素,则返回 -1
E set(int index, Eelement)将此集合中指定索引位置的元素修改为 element 参数指定的对象。
此方法返回此集合中指定索引位置的原元素
List<E> subList(int fromlndex, int tolndex)返回一个新的集合,新集合中包含 fromlndex 和 tolndex 索引之间
的所有元素。包含 fromlndex 处的元素,不包含 tolndex 索引处的
元素
import java.util.ArrayList;
import java.util.List;


public class IO1 {

    public static void main(String[] args) {
        List<String> list1 = new ArrayList<>();
        int index = list1.size();
        int lastIndexOf = list1.lastIndexOf(1);
        System.out.println("lsxtIndexOf:" + lastIndexOf);
        System.out.println("index:" + index);
        
        list1.add("北京");
        list1.add("上海");
        list1.add("深圳");
        list1.add("广州");
        System.out.println("List:" + list1);
        index = list1.size();
        System.out.println("index:" + index);


        List<String> other = new ArrayList<>();
        other.add("重庆");
        other.add("武汉");
        other.add("成都");
        other.add("杭州");
        other.add("上海");
        System.out.println("other:" + other);

        index = list1.size();
        for (int i = 0; i < other.size(); i++) {
            list1.add(index, other.get(i));
            index = list1.size();
        }//含List的遍历
        System.out.println("List:" + list1);
        System.out.println("index:" + index);

        list1.add(String.valueOf(other));
        System.out.println("List:" + list1);


        int shanghai0 = list1.indexOf("上海");
        int shanghai1 = list1.lastIndexOf("上海");
        System.out.println("上海的第一次出现的索引号:"+shanghai0);
        System.out.println("上海的最后一次出现的索引号:"+shanghai1);

    }
}

运行结果如下 

lsxtIndexOf:-1
index:0
List:[北京, 上海, 深圳, 广州]
index:4
other:[重庆, 武汉, 成都, 杭州, 上海]
List:[北京, 上海, 深圳, 广州, 重庆, 武汉, 成都, 杭州, 上海]
index:9
List:[北京, 上海, 深圳, 广州, 重庆, 武汉, 成都, 杭州, 上海, [重庆, 武汉, 成都, 杭州, 上海]]
上海的第一次出现的索引号:1
上海的最后一次出现的索引号:8

表 2 LinkList类中的方法
方法名称说明
void addFirst(E e)将指定元素添加到此集合的开头
void addLast(E e)将指定元素添加到此集合的末尾
E getFirst()返回此集合的第一个元素
E getLast()返回此集合的最后一个元素
E removeFirst()删除此集合中的第一个元素
E removeLast()删除此集合中的最后一个元素
import java.util.LinkedList;
import java.util.List;

public class IO1 {

    public static void main(String[] args) {

        List<String> list2 = new LinkedList<>();
        ((LinkedList<String>) list2).addFirst("你好");
        ((LinkedList<String>) list2).addFirst("谢谢");
        ((LinkedList<String>) list2).addFirst("对不起");
        System.out.println("List2:" + list2);

        ((LinkedList<String>) list2).addLast("你好");
        ((LinkedList<String>) list2).addLast("谢谢");
        ((LinkedList<String>) list2).addLast("对不起");
        ((LinkedList<String>) list2).addLast("xx");
        System.out.println("List2:" + list2);

        System.out.println(((LinkedList<String>) list2).getFirst());
        System.out.println(((LinkedList<String>) list2).getLast());
        ((LinkedList<String>) list2).removeLast();
        System.out.println("List2:" + list2);

        for(int i = 0; i < list2.size(); i++){
            System.out.print(list2.get(i) + "\t");
        }
        //遍历
        }
    }

运行结果如下

List2:[对不起, 谢谢, 你好]
List2:[对不起, 谢谢, 你好, 你好, 谢谢, 对不起, xx]
对不起
xx
List2:[对不起, 谢谢, 你好, 你好, 谢谢, 对不起]
对不起    谢谢    你好    你好    谢谢    对不起    

由于这周事情比较多,所以这周仅学习了很少的内容。下周就继续IO流的学习,此外,编程如果不实践还有什么意义,接下来将会进行图书管理系统的代码实现。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值