疯狂Java系列之List集合
2017-06-12 21:17
344 查看
List集合代表一个有序、可重复的集合,每个元素都有对应顺序的索引。
List继承示意图
List接口新增一些方法,针对它的增加、索引、删除、替换等集合元素的方法。
代码:
结果:
总结:例子很简单,基本上对照每一个结果就能知道这些底层方法的作用。
List可以存在重复对象,那么List判断对象重复的标准是什么?
List判断两个对象相等只要通过equals()方法比较返回true就可了。
Java8中为list还添加两个默认方法:
replaceAll(UnaryOperator operator):根据指定的计算规则重新设置List集合的所有元素;
sort(Comparator c):根据Comparator参数对list集合的元素排序;
代码:
结果:
ArrayList类和vetor类
作为List两个经典的实现类,支持List接口所有的方法。
List是一个可以动态扩展的集合,在ArrayList或Vector中元素超出数组长度,通过initialCapacity自动增加。为提高性能,可以使用ensureCapacity(int minCapactiy)方法一次性地增加initialCapacity,这样可以减少分配的次数。
ArrayList和Vector明显区别是:ArrayList是线程不安全的,当多个线程访问同一个ArrayList集合时,超过一个线程修改ArrayList集合,就必须手动保证该集合的安全性。vector是线程安全的。
固定长度的List
这里有个工具类Arrays,可以把一个数组或指定个数的对象转换成一个List集合,它是Arrays的内部类ArrayList的实例。
Arrays.ArrayList是一个固定长度的List集合,程序只能遍历访问该集合里的元素,不可增加、删除该集合中的元素。
List继承示意图
List接口新增一些方法,针对它的增加、索引、删除、替换等集合元素的方法。
代码:
package List; import java.util.ArrayList; import java.util.List; public class ListTest { public static void main(String[] args) { List person =new ArrayList(); person.add(new String("唐三藏")); person.add(new String("孙悟空")); person.add(new String("猪八戒")); person.add(new String("沙悟净")); person.add(new String("白龙马")); System.out.println(person); person.add(1,new String("白骨精"));//将新字符串对象插入到第二个位置 for(int i=0;i<person.size();i++) { System.out.println(person.get(i)); } //删除第三个元素 person.remove(2); System.out.println(person); //返回元素第一次出现的位置,如果返回1,则在第二位 System.out.println(person.indexOf(new String("沙悟净"))); //返回元素最后一次出现的位置,如果返回1,则在第二位 System.out.println(person.lastIndexOf(new String("沙悟净"))); person.set(4, new String("红孩儿"));//将第5个元素替换成红孩儿 System.out.println(person); System.out.println(person.subList(1, 3));//将第2个(包含)到第4个(不包含)截取成子集合 } }
结果:
总结:例子很简单,基本上对照每一个结果就能知道这些底层方法的作用。
List可以存在重复对象,那么List判断对象重复的标准是什么?
List判断两个对象相等只要通过equals()方法比较返回true就可了。
Java8中为list还添加两个默认方法:
replaceAll(UnaryOperator operator):根据指定的计算规则重新设置List集合的所有元素;
sort(Comparator c):根据Comparator参数对list集合的元素排序;
代码:
package List; import java.util.ArrayList; import java.util.List; public class Listtest2 { public static void main(String[] args) { List person=new ArrayList(); person.add(new String("孙悟空")); person.add(new String("唐僧")); person.add(new String("猪八戒净坛使者")); person.add(new String("沙悟净罗汉")); person.add(new String("白龙马小白龙")); System.out.println(person); //使用目标类型为Comparator的Lambda表达式对List集合排序 //根据字符串长度排序 person.sort((o1,o2)->((String)o1).length()-((String)o2).length()); System.out.println(person); //使用目标类型为UnaryOperator的lambda表达式来替换集合中所有元素 //该Lambda表达式控制使用每个字符串的长度作为新的集合元素 person.replaceAll(ele->((String)ele).length()); System.out.println(person); } }
结果:
ArrayList类和vetor类
作为List两个经典的实现类,支持List接口所有的方法。
List是一个可以动态扩展的集合,在ArrayList或Vector中元素超出数组长度,通过initialCapacity自动增加。为提高性能,可以使用ensureCapacity(int minCapactiy)方法一次性地增加initialCapacity,这样可以减少分配的次数。
ArrayList和Vector明显区别是:ArrayList是线程不安全的,当多个线程访问同一个ArrayList集合时,超过一个线程修改ArrayList集合,就必须手动保证该集合的安全性。vector是线程安全的。
固定长度的List
这里有个工具类Arrays,可以把一个数组或指定个数的对象转换成一个List集合,它是Arrays的内部类ArrayList的实例。
Arrays.ArrayList是一个固定长度的List集合,程序只能遍历访问该集合里的元素,不可增加、删除该集合中的元素。
相关文章推荐
- 疯狂JAVA讲义---第七章(中):集合List,Queue(转)
- 编程技巧系列(2)Java 集合(List,Set,Map)遍历时有条件删除特定元素
- [疯狂Java]集合:List、ListIterator
- Java 集合系列之 List总结(LinkedList, ArrayList等使用场景和性能分析)
- 【深入理解java集合系列】List,Set,Map用法以及区别
- Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例
- Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例
- [疯狂Java]集合:Deque(双端队列)以及两个实现(ArrayDeque、LinkedList)、Stack(摒弃)、各线性表性能分析
- Java多线程系列--“JUC集合”06之 ConcurrentSkipListSet
- Java集合系列(三)—— 使用LinkedList实现堆栈,队列
- Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例
- Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)
- 疯狂JAVA讲义---第七章(中):集合List,Queue
- Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例
- Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)
- Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)
- 深入Java集合学习系列:LinkedList的实现原理
- Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例
- JAVA集合源码分析系列:LinkedList源码分析
- Java 集合系列08之 List总结(LinkedList, ArrayList等使用场景和性能分析)