`
youkimra
  • 浏览: 34579 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java基础集合总结(list)

 
阅读更多

(一) 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标准库的一部分,它提供了一系列的接口和类来存储和操作各种类型的对象集合。这些接口和类遵循一致的设计模式,使得开发人员可以方便地管理和...

    java基础之集合

    Java集合框架主要包括三种类型的集合:`Collection`、`Set` 和 `Map`。 #### 二、集合概述 ##### 2.1 Collection接口的方法 - **add(Object o)**:将指定的对象加入集合。 - **clear()**:清空集合中的所有对象。 ...

    Java 基础核心总结_.zip

    10. **集合**:Java集合框架包括List、Set和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。理解它们的特点和用途,以及泛型的应用,对于高效编程至关重要。 11. **泛形**:泛型是Java 5引入的新...

    JAVA基础集合代码

    在Java编程语言中,集合框架是处理对象组的重要工具,它提供了一种高效...总的来说,Java集合框架提供了丰富的选择,满足了各种数据存储和操作的需求。通过深入理解和熟练应用,开发者可以写出更加高效、可维护的代码。

    Java 基础核心总结 +经典算法大全.rar

    《Java 基础核心总结》 Java 概述 什么是 Java2 Java 的特点Java 开发环境 JDK JRE Java 开发环境配置 Java 基本语法 数据类型基础语法运算符 Java 执行控制流程条件语句 if 条件语句 if...else 条件语句if...else ...

    易语言仿java集合 list map源码

    本主题聚焦于易语言中的面向对象编程,特别是模仿Java集合框架的List和Map接口的实现。这些数据结构在编程中扮演着核心角色,用于组织和管理数据。 首先,让我们深入了解易语言的面向对象编程概念。面向对象编程...

    java泛型集合 java集合 集合 java Collection

    Java集合框架是一个包含多种数据结构(如列表、集、队列等)的API,这些数据结构由接口(如`Collection`、`List`、`Set`和`Queue`)和实现这些接口的类(如`ArrayList`、`HashSet`和`LinkedList`)组成。`Collection...

    Java 基础核心总结.pdf

    9. Java的集合框架:集合框架提供了一套接口和类,用于在程序中存储和操作集合数据。包括List、Set、Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。 10. Java的泛型:泛型是在编译时提供类型...

    java基础集合篇.wps

    整理了一下java基础的集合部分,有list,map,set等及其相关。

    Java基础核心总结.PDF

    Java的集合框架包括List(如ArrayList、LinkedList和Vector)、Set(如HashSet、TreeSet、LinkedHashSet和PriorityQueue)、Map(如HashMap、TreeMap、LinkedHashMap、Hashtable、IdentityHashMap、WeakHashMap)...

    java基础练习题 (目前到集合内含三个小综合案例)

    Java集合框架包括接口(如List、Set、Queue)和实现类(如ArrayList、LinkedList、HashSet、HashMap等)。理解各种集合的区别,以及它们的实现方式和应用场景,是提升编程效率的关键。例如,List接口中的ArrayList和...

    java常用集合类总结

    "Java集合类总结" Java集合类是Java语言中的一种重要数据结构,用于存储和管理数据。Java集合类可以分为两种:Collection接口和Map接口。Collection接口有两个子接口:List接口和Set接口。List接口是有序的,可以...

    Java List集合的应用.rar

    首先,让我们深入了解一下Java List集合的基础概念。List接口继承自Collection接口,它规定了元素有序且可以有重复的特性。Java中常见的List实现类有ArrayList、LinkedList和Vector等。ArrayList基于数组实现,提供...

    Java基础面试题集合

    2. **Java集合**: - **集合框架**:包括List、Set、Map三大接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等。 - **泛型**:提供类型安全,限制集合元素类型,避免强制类型转换。 - **...

    java基础总结资料

    8. **集合框架**:Java集合框架包括接口(如List、Set、Map)和实现这些接口的类(如ArrayList、LinkedList、HashSet、HashMap)。它们为存储和操作对象提供了强大支持。 9. **IO流**:Java的IO流处理能力强大,...

    java后台list集合转XML格式数据

    java后台从数据库读取 数据,封装到list集合,控制层转化为XML格式数据

Global site tag (gtag.js) - Google Analytics