Java中List的详细用法_java list-程序员宅基地

技术标签: Java  List  

目录:
list中添加,获取,删除元素;
list中是否包含某个元素;
list中根据索引将元素数值改变(替换);
list中查看(判断)元素的索引;
根据元素索引位置进行的判断;
利用list中索引位置重新生成一个新的list(截取集合);
对比两个list中的所有元素;
判断list是否为空;
返回Iterator集合对象;
将集合转换为字符串;
将集合转换为数组;
集合类型转换;
去重复;

备注:内容中代码具有关联性。

1.list中添加,获取,删除元素;
  添加方法是:.add(e);  获取方法是:.get(index);  删除方法是:.remove(index); 按照索引删除;  .remove(Object o); 按照元素内容删除;

            List<String> person=new ArrayList<>();
            person.add("jackie");   //索引为0  //.add(e)
            person.add("peter");    //索引为1
            person.add("annie");    //索引为2
            person.add("martin");   //索引为3
            person.add("marry");    //索引为4

            person.remove(3);   //.remove(index)
            person.remove("marry");     //.remove(Object o)

            String per="";
            per=person.get(1);
            System.out.println(per);    ////.get(index)

            for (int i = 0; i < person.size(); i++) {
                System.out.println(person.get(i));  //.get(index)
            }

2.list中是否包含某个元素;

  方法:.contains(Object o); 返回true或者false

            List<String> fruits=new ArrayList<>();
            fruits.add("苹果");
            fruits.add("香蕉");
            fruits.add("桃子");
            //for循环遍历list
            for (int i = 0; i < fruits.size(); i++) {
    
                System.out.println(fruits.get(i));
            }
            String appleString="苹果";
            //true or false
            System.out.println("fruits中是否包含苹果:"+fruits.contains(appleString));

            if (fruits.contains(appleString)) {
                System.out.println("我喜欢吃苹果");
            }else {
                System.out.println("我不开心");
            }

3.list中根据索引将元素数值改变(替换);

  注意 .set(index, element); 和 .add(index, element); 的不同;

            String a="白龙马", b="沙和尚", c="八戒", d="唐僧", e="悟空";
            List<String> people=new ArrayList<>();
            people.add(a);
            people.add(b);
            people.add(c);
            people.set(0, d);   //.set(index, element);     //将d唐僧放到list中索引为0的位置,替换a白龙马
            people.add(1, e);   //.add(index, element);     //将e悟空放到list中索引为1的位置,原来位置的b沙和尚后移一位

            //增强for循环遍历list
            for(String str:people){
                System.out.println(str);
            }

4.list中查看(判断)元素的索引;  

  注意:.indexOf(); 和 lastIndexOf()的不同;

            List<String> names=new ArrayList<>();
            names.add("刘备");    //索引为0
            names.add("关羽");    //索引为1
            names.add("张飞");    //索引为2
            names.add("刘备");    //索引为3
            names.add("张飞");    //索引为4
            System.out.println(names.indexOf("刘备"));
            System.out.println(names.lastIndexOf("刘备"));
            System.out.println(names.indexOf("张飞"));
            System.out.println(names.lastIndexOf("张飞"));

5.根据元素索引位置进行的判断;

if (names.indexOf("刘备")==0) {
    System.out.println("刘备在这里");
}else if (names.lastIndexOf("刘备")==3) {
    System.out.println("刘备在那里");
}else {
    System.out.println("刘备到底在哪里?");
}

6.利用list中索引位置重新生成一个新的list(截取集合);

  方法: .subList(fromIndex, toIndex);  .size() ; 该方法得到list中的元素数的和

            List<String> phone=new ArrayList<>();
            phone.add("三星");    //索引为0
            phone.add("苹果");    //索引为1
            phone.add("锤子");    //索引为2
            phone.add("华为");    //索引为3
            phone.add("小米");    //索引为4
            //原list进行遍历
            for(String pho:phone){
                System.out.println(pho);
            }
            //生成新list
            phone=phone.subList(1, 4);  //.subList(fromIndex, toIndex)      //利用索引1-4的对象重新生成一个list,但是不包含索引为4的元素,4-1=3
            for (int i = 0; i < phone.size(); i++) { // phone.size() 该方法得到list中的元素数的和
                System.out.println("新的list包含的元素是"+phone.get(i));
            }

7.对比两个list中的所有元素;

  //两个相等对象的equals方法一定为true, 但两个hashcode相等的对象不一定是相等的对象

//1.<br>if (person.equals(fruits)) {
    System.out.println("两个list中的所有元素相同");
}else {
    System.out.println("两个list中的所有元素不一样");
}
//2.       
if (person.hashCode()==fruits.hashCode()) {
    System.out.println("我们相同");
}else {
    System.out.println("我们不一样");
}

8.判断list是否为空;

  //空则返回true,非空则返回false

if (person.isEmpty()) {
    System.out.println("空的");
}else {
    System.out.println("不是空的");
}

9.返回Iterator集合对象;

System.out.println("返回Iterator集合对象:"+person.iterator());

10.将集合转换为字符串;

String liString="";
liString=person.toString();
System.out.println("将集合转换为字符串:"+liString);

11.将集合转换为数组;

System.out.println("将集合转换为数组:"+person.toArray());

12.集合类型转换;

//1.默认类型
List<Object> listsStrings=new ArrayList<>();
  for (int i = 0; i < person.size(); i++) {
    listsStrings.add(person.get(i));
}
//2.指定类型
List<StringBuffer> lst=new ArrayList<>();
  for(String string:person){
  lst.add(StringBuffer(string));
}

13.去重复;

            List<String> lst1=new ArrayList<>();
            lst1.add("aa");
            lst1.add("dd");
            lst1.add("ss");
            lst1.add("aa");
            lst1.add("ss");

                   //方法 1.
            for (int i = 0; i <lst1.size()-1; i++) {
    
                for (int j = lst1.size()-1; j >i; j--) {
    
                    if (lst1.get(j).equals(lst1.get(i))) {
                        lst1.remove(j);
                    }
                }
            }
            System.out.println(lst1);

                   //方法 2.
            List<String> lst2=new ArrayList<>();
            for (String s:lst1) {
                if (Collections.frequency(lst2, s)<1) {
                    lst2.add(s);
                }
            }
            System.out.println(lst2);

附完整代码

package MyTest01;

import java.util.ArrayList;
import java.util.List;

public class ListTest01 {

    public static void main(String[] args) {

            //list中添加,获取,删除元素
            List<String> person=new ArrayList<>();
            person.add("jackie");   //索引为0  //.add(e)
            person.add("peter");    //索引为1
            person.add("annie");    //索引为2
            person.add("martin");   //索引为3
            person.add("marry");    //索引为4

            person.remove(3);   //.remove(index)
            person.remove("marry");     //.remove(Object o)

            String per="";
            per=person.get(1);
            System.out.println(per);    ////.get(index)

            for (int i = 0; i < person.size(); i++) {
                System.out.println(person.get(i));  //.get(index)
            }



            //list总是否包含某个元素
            List<String> fruits=new ArrayList<>();
            fruits.add("苹果");
            fruits.add("香蕉");
            fruits.add("桃子");
            //for循环遍历list
            for (int i = 0; i < fruits.size(); i++) {
                System.out.println(fruits.get(i));
            }
            String appleString="苹果";
            //true or false
            System.out.println("fruits中是否包含苹果:"+fruits.contains(appleString));

            if (fruits.contains(appleString)) {
                System.out.println("我喜欢吃苹果");
            }else {
                System.out.println("我不开心");
            }

            //list中根据索引将元素数值改变(替换)
            String a="白龙马", b="沙和尚", c="八戒", d="唐僧", e="悟空";
            List<String> people=new ArrayList<>();
            people.add(a);
            people.add(b);
            people.add(c);
            people.set(0, d);   //.set(index, element)      //将d唐僧放到list中索引为0的位置,替换a白龙马
            people.add(1, e);   //.add(index, element);     //将e悟空放到list中索引为1的位置,原来位置的b沙和尚后移一位

            //增强for循环遍历list
            for(String str:people){
                System.out.println(str);
            }

            //list中查看(判断)元素的索引
            List<String> names=new ArrayList<>();
            names.add("刘备");    //索引为0
            names.add("关羽");    //索引为1
            names.add("张飞");    //索引为2
            names.add("刘备");    //索引为3
            names.add("张飞");    //索引为4
            System.out.println(names.indexOf("刘备"));
            System.out.println(names.lastIndexOf("刘备"));
            System.out.println(names.indexOf("张飞"));
            System.out.println(names.lastIndexOf("张飞"));

            //根据元素索引位置进行的判断
            if (names.indexOf("刘备")==0) {
                System.out.println("刘备在这里");
            }else if (names.lastIndexOf("刘备")==3) {
                System.out.println("刘备在那里");
            }else {
                System.out.println("刘备到底在哪里?");
            }

            //利用list中索引位置重新生成一个新的list(截取集合)
            List<String> phone=new ArrayList<>();
            phone.add("三星");    //索引为0
            phone.add("苹果");    //索引为1
            phone.add("锤子");    //索引为2
            phone.add("华为");    //索引为3
            phone.add("小米");    //索引为4
            //原list进行遍历
            for(String pho:phone){
                System.out.println(pho);
            }
            //生成新list
            phone=phone.subList(1, 4);  //.subList(fromIndex, toIndex)      //利用索引1-4的对象重新生成一个list,但是不包含索引为4的元素,4-1=3
            for (int i = 0; i < phone.size(); i++) { // phone.size() 该方法得到list中的元素数的和
                System.out.println("新的list包含的元素是"+phone.get(i));
            }

            //对比两个list中的所有元素
            //两个相等对象的equals方法一定为true, 但两个hashcode相等的对象不一定是相等的对象
            if (person.equals(fruits)) {
                System.out.println("两个list中的所有元素相同");
            }else {
                System.out.println("两个list中的所有元素不一样");
            }

            if (person.hashCode()==fruits.hashCode()) {
                System.out.println("我们相同");
            }else {
                System.out.println("我们不一样");
            }


            //判断list是否为空
            //空则返回true,非空则返回false
            if (person.isEmpty()) {
                System.out.println("空的");
            }else {
                System.out.println("不是空的");
            }

            //返回Iterator集合对象
            System.out.println("返回Iterator集合对象:"+person.iterator());

            //将集合转换为字符串
            String liString="";
            liString=person.toString();
            System.out.println("将集合转换为字符串:"+liString);

            //将集合转换为数组,默认类型
            System.out.println("将集合转换为数组:"+person.toArray());

            ////将集合转换为指定类型(友好的处理)
            //1.默认类型
            List<Object> listsStrings=new ArrayList<>();
            for (int i = 0; i < person.size(); i++) {
                listsStrings.add(person.get(i));
            }
            //2.指定类型
            List<StringBuffer> lst=new ArrayList<>();
            for(String string:person){
                lst.add(StringBuffer(string));
            }




    }

    private static StringBuffer StringBuffer(String string) {
        return null;
    }


    }
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Barcon/article/details/82628120

智能推荐

Notion,这应该是程序员最后一款笔记软件-程序员宅基地

文章浏览阅读1.1w次,点赞6次,收藏75次。点击上方前端瓶子君,关注公众号回复算法,加入前端编程面试算法每日一题群市面上笔记软件五花八门,都各有特色。wolai、语雀、飞书、印象笔记、石墨、幕布、为知笔记.....等等,数不胜数,..._notion和typora

Java入门 - 循环结构进阶_本关需要你实现一个能打印矩形的小程序,效果图如下:-程序员宅基地

文章浏览阅读1.3w次,点赞23次,收藏55次。第1关:for循环的进阶使用-嵌套循环(1)任务描述本关需要你实现一个能打印矩形的小程序,效果图如下:相关知识看到这一关的任务你是不是想到这样子做呢?for(int i = 0; i< 10; i++){System.out.println("*********");}没错这样子确实能实现我们想要的效果,不过本关的规则是一次只能打印一颗,怎么实现呢?我们可以把问题拆分:循环打印一颗星,循环十次;打印完十颗星之后换行;循环可以嵌套循环,循环的嵌套是指在循环里面写循环。编程要_本关需要你实现一个能打印矩形的小程序,效果图如下:

整数反转的两种思路_两个数在范围内反转怎么算-程序员宅基地

文章浏览阅读1k次,点赞2次,收藏2次。两种方式解决此问题:转换法、数学方法。_两个数在范围内反转怎么算

android studio常见的运行错误总结_internal error: unexpected lint return value -1-程序员宅基地

文章浏览阅读5.1k次。开发中遇到的编译问题汇总:(1.)java.lang.RuntimeException:Unable to start activity ComponentInfo{com.yhy.testviewdemo/com.yhy.testviewdemo.activity.BitmapActivity}: java.lang.NullPointerException: Attempt to invoke..._internal error: unexpected lint return value -1

支付宝工程师如何搞定关系数据库的“大脑”——查询优化器_支付宝怎么保证数据库的安全-程序员宅基地

文章浏览阅读3.5k次,点赞29次,收藏86次。查询优化器是关系数据库系统的核心模块,是数据库内核开发的重点和难点,也是衡量整个数据库系统成熟度的“试金石”。查询优化理论诞生距今已有四十来年,学术界和工业界其实已经形成了一套比较完善的查询优化框架(System-R 的 Bottom-up 优化框架和 Volcano/Cascade 的 Top-down 优化框架),但围绕查询优化的核心难题始终没变——如何利用有限的系统资源尽可能为查询选择一..._支付宝怎么保证数据库的安全

windows提权_获取windows主机杀软命令-程序员宅基地

文章浏览阅读301次。windows-kernel-exploits(Windows平台提权漏洞集合):https://github.com/SecWiki/windows-kernel-exploitsWMIC信息收集WMIC:Windows管理工具命令行,提供了从命令行接口和批命令脚本执行系统管理的支持,对于信息收集和渗透测试是非常实用的。wmic信息提取脚本:wmic_info.bat提取进程、服务、用户帐号、用户组、网络接口、硬盘信息、网络共享信息、安装Windows补丁、程序在启动运行、安装的软件列表、操_获取windows主机杀软命令

随便推点

linux systemed——自定义系统服务,及开机启动_/etc/systemed/system/ 项目开机.ini-程序员宅基地

文章浏览阅读1.6k次。概念Systemd 管理系统服务、设备、挂载点。如果要设置某个服务在某个点或某个设备接入后执行,Systemd 非常适合自定义servicesystemctl脚本存放在:/usr/lib/systemd/,或/etc/systemd/system/。有系统(system)和用户(user)之分,像需要开机不登陆就能运行的程序,还是存在系统服务里吧,即:/usr/lib/systemd/system目录下每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Insta_/etc/systemed/system/ 项目开机.ini

利用Shell开发Redis多实例启动脚本_如何写多个redis启动脚本-程序员宅基地

文章浏览阅读695次。1.1 redis部署情况## 软件部署情况[root@node31 ~]# ls -ld /data/apps/redis # 目录本身及以下所有文件的属主/组为redislrwxrwxrwx 1 root root 24 Oct 26 11:33 /data/apps/redis -> /data/apps/redis-4.0.14/ ## 实例部署情况[root@nod..._如何写多个redis启动脚本

JavaScript基础学习(二)_题目:要求输入一串低于10位的数字,输出这串数字的中文大写(类似于银行的读法)-程序员宅基地

文章浏览阅读157次。题目:要求输入一串低于10位的数字,输出这串数字的中文大写(类似于银行的读法)input:10000 output:壹万input:1001010 output:壹佰万壹仟零壹拾每个JavaScript函数都是一个对象,对象中有些属性我们可以访问,但有些不可以,这些属性仅供JavaScript引擎存取,[[scope]]就是其中一个。[[scope]]指的就是我们所说的作用域,其中存储了运..._题目:要求输入一串低于10位的数字,输出这串数字的中文大写(类似于银行的读法)

SQL语句输出_sql输出语句-程序员宅基地

文章浏览阅读8.1k次,点赞4次,收藏3次。select ,print均可以做输出但如果想用print同时输出字符串和数字时,就需要遇到转换函数convert:declare allstudents inte.g.print’毕业人数为’+convert(char,@allstudents)在执行时可能会遇到结果中显示了你的输出信息,而在消息中却没有,这原因可能是你使用了select若想在消息中输出,改成print即可..._sql输出语句

交易系统开发(六)——HFT高频交易-程序员宅基地

文章浏览阅读7.2k次,点赞8次,收藏25次。一、高频交易简介1、高频交易简介高频交易(High Frequency Trading)是指从极为短暂的市场变化(市场的微观特性)中寻求获利的程序化交易,如某种证券买入价和卖出价差价的微小变化,或者某只股票在不同交易所之间的微小价差。2、高频交易的特点美国证券交易委员会SEC给出的高频交易的特点:(1)使用超高速的复杂计算机系统下单。(2)使用co-location和直连交易所的数据通道。(3)平均每次持仓时间极短。(4)大量发送和取消委托订单。(5)收盘时基本保持平仓(_hft

2008 server sql 数据库引擎安装失败;安装2008sql server时,提示sql server 复制、数据库引擎服务、Reporting Services、全文搜索等失败。W10_windows10安装sqlserver 2008 数据引擎服务失败-程序员宅基地

文章浏览阅读3.1k次,点赞4次,收藏7次。由于学习C#,需要使用数据库,我本人亲身体验了安装N次失败的绝望,也在网上找了许多方法,但是又没有效果,也很是无奈,最后抱着一点点希望,也下了很大决心————重置电脑会删错我的所有软件,但是不会删除个人文档和非系统盘,记得备份重新安装最后成功!!此方法仅供参考,并非最优解,大佬们有更好的方法,可以忽略。..._windows10安装sqlserver 2008 数据引擎服务失败