允许重复的子接口List
来源:互联网 发布:java银行管理系统代码 编辑:程序博客网 时间:2024/06/05 13:24
一 List接口概述
List集合代表一个有序集合,集合中每个元素都有其对应的顺序索引。List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。因为List集合默认按元素的添加顺序设置元素的索引,例如第一次添加的元素索引为0,第二次添加的元素索引为1。
List作为Collection接口的子接口,当然可以使用Collection接口里全部方法。而且由于List是有序集合,因此List集合里包含了根据索引来操作集合元素的方法。
二 List集合常规用法
1 代码示例
import java.util.*;public class ListTest{public static void main(String[] args){List books = new ArrayList();// 向books集合中添加三个元素books.add(new String("爷爷的青春岁月"));books.add(new String("奶奶的青春岁月"));books.add(new String("妈妈的青春岁月"));System.out.println(books);// 将新字符串对象插入在第二个位置books.add(1 , new String("爸爸的青春岁月"));for (int i = 0 ; i < books.size() ; i++ ){System.out.println(books.get(i));}// 删除第三个元素books.remove(2);System.out.println(books);// 判断指定元素在List集合中位置:输出1,表明位于第二位System.out.println(books.indexOf(new String("爸爸的青春岁月"))); //①//将第二个元素替换成新的字符串对象books.set(1, new String("儿子的幻想"));System.out.println(books);//将books集合的第二个元素(包括)//到第三个元素(不包括)截取成子集合System.out.println(books.subList(1 , 2));}}
2 运行结果
[爷爷的青春岁月, 奶奶的青春岁月, 妈妈的青春岁月]
爷爷的青春岁月
爸爸的青春岁月
奶奶的青春岁月
妈妈的青春岁月
[爷爷的青春岁月, 爸爸的青春岁月, 妈妈的青春岁月]
1
[爷爷的青春岁月, 儿子的幻想, 妈妈的青春岁月]
[儿子的幻想]
3 代码分析
此代码演示了List集合的常规用法。
三List集合的重要方法equls应用
1 代码示例
import java.util.*;class A{public boolean equals(Object obj){return true;}}public class ListTest2{public static void main(String[] args){List books = new ArrayList();books.add(new String("网络运维与管理"));books.add(new String("电脑黑客攻防"));books.add(new String("网络管理工具"));System.out.println(books);// 删除集合中A对象,将导致第一个元素被删除books.remove(new A()); // ①System.out.println(books);// 删除集合中A对象,再次删除集合中第一个元素books.remove(new A()); // ②System.out.println(books);}}
2 运行结果
[网络运维与管理, 电脑黑客攻防, 网络管理工具]
[电脑黑客攻防, 网络管理工具]
[网络管理工具]
3 代码分析
从上面代码的运行效果来看,执行①处代码时,程序试图删除一个A对象,List将会调用该A对象的equal方法依次与集合元素进行比较,如果该equal方法以某个集合元素作为参数时返回true,List将会删除该元素,A类重写了equal方法,该方法总是返回true。所以每次从List集合中删除A对象时,总是删除List集合中的第一个元素。
四 Java 8新增List方法应用
1 代码示例
import java.util.*;public class ListTest3{public static void main(String[] args){List books = new ArrayList();// 向books集合中添加4个元素books.add(new String("TCP/IP协议大全"));books.add(new String("Visual C++"));books.add(new String("SQl server范例大全"));books.add(new String("现代操作系统"));// 使用目标类型为Comparator的Lambda表达式对List集合排序books.sort((o1, o2)->((String)o1).length() - ((String)o2).length());System.out.println(books);// 使用目标类型为UnaryOperator的Lambda表达式来替换集合中所有元素// 该Lambda表达式控制使用每个字符串的长度作为新的集合元素books.replaceAll(ele->((String)ele).length());System.out.println(books); // 输出[6, 10, 10, 14]}}
2 运行结果
[现代操作系统, TCP/IP协议大全, Visual C++, SQl server范例大全]
[6, 10, 10, 14]
3 代码分析
该代码演示了sort方法和replaceAll这两个Java 8新增方法,他们使用了Lambda表达式:其中sort方法Lambda表达式指定的排序规则是:字符长度越长,字符串越大,一次执行完之后,List集合中的字符串会由短到长的顺序排列。replaceAll方法的Lambda表达式指定了替换集合元素的规则:直接用集合元素的长度作为新的集合元素。执行完该方法后,集中的元素被替换为[6, 10, 10, 14]。
- 允许重复的子接口List
- 深入Collection集合的子接口List
- 整理的Java List Set Map是否有序,元素是否允许重复
- 整理的Java List Set Map是否有序,元素是否允许重复
- 【JavaSE_学习笔记】List接口的三个子实现类
- Collection接口之List子接口详解
- 整数的拆分问题(允许重复)
- 允许重复选取的组合数
- 允许重复数字的划分树
- 允许Key重复的Map - IdentityHashMap
- Collection子接口(List/Set/Queue/SortedSet)
- Collection<E>子接口之List<E>
- 容器 List接口 List接口的方法
- Java集合Collection接口之List子接口
- 允许键值重复 不允许键重复 不允许建与值同时重复的MAP
- 遍历LIST ,去除LIST重复的代码
- list去掉重复的对象
- 去除list的重复元素
- 专为枚举类设计的集合类EnumSet
- 根据文档批量复制文件
- Git学习笔记03_用Git和GitHub管理项目仓库记录
- C#去除字符串中的中文、字母、数字
- 勤写案例,防止遗忘
- 允许重复的子接口List
- redis 环境安装
- List集合的迭代神器ListIterator
- HDU5011 Game(尼姆博奕)
- 固定长度的List
- Apache与Tomcat有什么关系和区别
- Spring Security实现后台管理员登录(一)
- Lua5.1的元方法__call的使用示例
- leetcode-101-Symmetric Tree