(一) list的存,移除和清空
方法1
public static void testList(int i){
list.add(i);
System.out.println(list.get(0));
list.remove(i);
System.out.println(list.size());
}
方法2
public static void testList(Integer i){
list.add(i);
System.out.println(list.get(0));
list.remove(i);
System.out.println(list.size());
}
在执行了两个方法后会有什么不同的结果?执行方法1后由于传入的是int基本类型,所以在list.add(1)的时候已经将int型的1自动转换为Integer对象了,这叫java的自动装箱。所谓自动装箱,就是原始数据类型(int, long, double, float, boolean等),在需要的时候自动封装成对应的类的对象(Integer, Long, Double, Float, Boolean等)。因为add()方法只支持存放对象,所以需要装箱,而在list.remove(i)时候list提供了两个remove的方法,分别是整形和对象类型,整形用于根据list索引下标直接找到对象并移除,而对象则是直接找到对象并移除,因此在此处执行list.remove(i)就会被编译器立即为根据下标找对象,而当前只添加了一个对象到List,下标起始位应该为0,因此Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1这个错误就是必然的了。而执行方法2则避免了这个问题,直接移除了存入的对象。
方法3
public static void testList(){
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
List<String> listB = new ArrayList<String>();
listB.add("ddd");
listB.add("eee");
listB.add("ccc");
list.removeAll(listB);
System.out.println("list的个数为:"+list.size()+ "-->"+list.get(0)+" "+list.get(1));
}
结果为 : list的个数为:2-->aaa bbb 显然,list.removeAll(listB)方法删除了list中与listB共同存在的'ccc'项.那如果将list.removeAll(listB)替换为list.retainAll(listB) 结果为 : list的个数为:1-->ccc ,也就是说retainAll方法删除了list中与listB不同的元素只保留了2者相同项。
方法3
list.clear(); 这个方法能够清空list中所有元素。
(二) list的之间的增量添加
public static void testList(){
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
List<String> listB = new ArrayList<String>();
listB.add("ddd");
listB.add("eee");
list.addAll(0,listB);
System.out.println("list的个数为:"+list.size()+ "-->"+list.get(0)+" "+list.get(1)+" "+list.get(2)+" "+list.get(3)+" "+list.get(4));
}
结果为: list的个数为:5-->ddd eee aaa bbb ccc 可以看出list.addAll(0,listB);是将listB对象中的元素按指定的索引添加到list中,当前给的索引值是0,因此ddd eee 在最前面出现。
public static void testList(){
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
List<String> listB = new ArrayList<String>();
listB.add("ddd");
listB.add("eee");
listB.add("ccc");
list.addAll(listB);
List<String> listC = list.subList(2, 3);
System.out.println("list的个数为:"+list.size());
System.out.println("listC的个数为:"+listC.size()+" "+listC.get(0));
}
该方法执行结果:
list的个数为:6
listC的个数为:1 ccc
因为执行了list.addAll(listB);所以list的个数是6 , 执行了List<String> listC = list.subList(2, 3);所以返回了一个新的listC结果为 ccc
public static void testList(){
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
List<String> listB = new ArrayList<String>();
listB.add("ddd");
listB.add("eee");
listB.add("ccc");
list.addAll(listB);
//list.remove("eee");
if(list.contains("ccc"))
System.out.println("包含 ccc ");
if(list.containsAll(listB)){
System.out.println("包含 listB");
}else{
System.out.println("不包含 listB");
}
}
运行结果为 : 包含 ccc ,包含 listB 但我们取消list.remove("eee");的注释后发现第二句变成了:不包含 listB ,也就是说list.containsAll是判断list里面是否包含全部的listB的元素,缺一不可。
list的迭代功能
public static void testList(){
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
List<String> listB = new ArrayList<String>();
listB.add("ddd");
listB.add("eee");
listB.add("ccc");
list.addAll(listB);
Iterator<String> itor = list.iterator();
Object str ;
while(itor.hasNext()){
str = itor.next();
itor.remove();
System.out.println(str);
}
if(list.contains("ccc"))
System.out.println("包含 ccc ");
if(list.containsAll(listB)){
System.out.println("包含 listB");
}else{
System.out.println("不包含 listB");
}
}
此功能是在不知道list中所存放的类型情况下使用便利的方式得到数据。每遍历一次调用itor.remove()即可将该层次的对象移除。也就是list中的元素被一个个的移除,那么再执行的话结果就会是 :
aaa
6
bbb
5
ccc
4
ddd
3
eee
2
ccc
1
不包含 listB
分享到:
相关推荐
### Java集合框架总结 #### 一、Java集合框架概述 Java集合框架是Java标准库的一部分,它提供了一系列的接口和类来存储和操作各种类型的对象集合。这些接口和类遵循一致的设计模式,使得开发人员可以方便地管理和...
Java集合框架主要包括三种类型的集合:`Collection`、`Set` 和 `Map`。 #### 二、集合概述 ##### 2.1 Collection接口的方法 - **add(Object o)**:将指定的对象加入集合。 - **clear()**:清空集合中的所有对象。 ...
10. **集合**:Java集合框架包括List、Set和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。理解它们的特点和用途,以及泛型的应用,对于高效编程至关重要。 11. **泛形**:泛型是Java 5引入的新...
在Java编程语言中,集合框架是处理对象组的重要工具,它提供了一种高效...总的来说,Java集合框架提供了丰富的选择,满足了各种数据存储和操作的需求。通过深入理解和熟练应用,开发者可以写出更加高效、可维护的代码。
《Java 基础核心总结》 Java 概述 什么是 Java2 Java 的特点Java 开发环境 JDK JRE Java 开发环境配置 Java 基本语法 数据类型基础语法运算符 Java 执行控制流程条件语句 if 条件语句 if...else 条件语句if...else ...
本主题聚焦于易语言中的面向对象编程,特别是模仿Java集合框架的List和Map接口的实现。这些数据结构在编程中扮演着核心角色,用于组织和管理数据。 首先,让我们深入了解易语言的面向对象编程概念。面向对象编程...
Java集合框架是一个包含多种数据结构(如列表、集、队列等)的API,这些数据结构由接口(如`Collection`、`List`、`Set`和`Queue`)和实现这些接口的类(如`ArrayList`、`HashSet`和`LinkedList`)组成。`Collection...
9. Java的集合框架:集合框架提供了一套接口和类,用于在程序中存储和操作集合数据。包括List、Set、Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。 10. Java的泛型:泛型是在编译时提供类型...
整理了一下java基础的集合部分,有list,map,set等及其相关。
Java的集合框架包括List(如ArrayList、LinkedList和Vector)、Set(如HashSet、TreeSet、LinkedHashSet和PriorityQueue)、Map(如HashMap、TreeMap、LinkedHashMap、Hashtable、IdentityHashMap、WeakHashMap)...
Java集合框架包括接口(如List、Set、Queue)和实现类(如ArrayList、LinkedList、HashSet、HashMap等)。理解各种集合的区别,以及它们的实现方式和应用场景,是提升编程效率的关键。例如,List接口中的ArrayList和...
"Java集合类总结" Java集合类是Java语言中的一种重要数据结构,用于存储和管理数据。Java集合类可以分为两种:Collection接口和Map接口。Collection接口有两个子接口:List接口和Set接口。List接口是有序的,可以...
首先,让我们深入了解一下Java List集合的基础概念。List接口继承自Collection接口,它规定了元素有序且可以有重复的特性。Java中常见的List实现类有ArrayList、LinkedList和Vector等。ArrayList基于数组实现,提供...
2. **Java集合**: - **集合框架**:包括List、Set、Map三大接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等。 - **泛型**:提供类型安全,限制集合元素类型,避免强制类型转换。 - **...
8. **集合框架**:Java集合框架包括接口(如List、Set、Map)和实现这些接口的类(如ArrayList、LinkedList、HashSet、HashMap)。它们为存储和操作对象提供了强大支持。 9. **IO流**:Java的IO流处理能力强大,...
java后台从数据库读取 数据,封装到list集合,控制层转化为XML格式数据