Java 容器:Collection 初探之 List

  1   1 ///: JavaBasic//com.cnblogs.pattywgm.day1//CollectionTest.java
  2   2
  3   3 package com.cnblogs.pattywgm.day1;
  4   4
  5   5 import java.io.BufferedReader;
  6   6 import java.io.IOException;
  7   7 import java.io.InputStreamReader;
  8   8 import java.util.ArrayList;
  9   9 import java.util.Arrays;
 10  10 import java.util.Iterator;
 11  11 import java.util.List;
 12  12 import java.util.ListIterator;
 13  13
 14  14 /**
 15  15  * @author Administrator
 16  16  * @Time: 2014-6-13
 17  17  * @Descri: CollectionTest.java
 18  18  */
 19  19
 20  20 public class CollectionTest {
 21  21     //Testing of List
 22  22     List<String> list1=new ArrayList<String>();
 23  23     List<String> list2=new ArrayList<String>();
 24  24     List<Integer> list3=new ArrayList<Integer>();
 25  25
 26  26     public CollectionTest() {
 27  27         addElement();
 28  28     }
 29  29
 30  30     public void addElement(){
 31  31         int count=5;
 32  32         while(count>=0){
 33  33             //Appends the specified element to the end of list1
 34  34             list1.add("goods"+count);
 35  35             /*Insert the specified element in the head of list1
 36  36              list1.add(0, "goods"+count);
 37  37              */
 38  38             count--;
 39  39         }
 40  40
 41  41     }
 42  42
 43  43     public void addCollectionElements(){
 44  44         //Appends all of the elements in list1 (the specified collection) to the end of list2
 45  45         list2.addAll(list1);
 46  46     }
 47  47
 48  48     public void getElement(List<String> list){
 49  49         // 1)
 50  50         for(int i=0;i<list.size();i++){
 51  51             System.out.printf("%s‘s %dth element is %s",list,i,list.get(i).toString());
 52  52             System.out.println();
 53  53         }
 54  54         System.out.println("~~~~~~~~~~~~~~~~~~~~~~");
 55  55         // 2)use Iterator
 56  56         Iterator<String> iter=list.iterator();
 57  57         int j=0;
 58  58         while(iter.hasNext()){
 59  59             System.out.printf("%s‘s %dth element is %s",list,j++,iter.next());
 60  60             System.out.println();
 61  61         }
 62  62     }
 63  63
 64  64     public void removeElement(List<String> list,int index,String obj){
 65  65         // 1) Removes the element at the specified position in this list
 66  66         list.remove(index);
 67  67         // 2) Removes the first occurrence of the specified element from this list, if it is present .
 68  68         list.remove(obj);
 69  69         /*
 70  70          * Removes all of the elements from this list.
 71  71          * The list will be empty after this call returns.
 72  72          */
 73  73 //        list.clear();
 74  74
 75  75     }
 76  76
 77  77     public List<String> getSubList(List<String> list, int fromIndex, int toIndex){
 78  78         return list.subList(fromIndex, toIndex);
 79  79     }
 80  80     //ListIterator
 81  81     public void listIter(List<String> list){
 82  82         ListIterator<String> listIter= list.listIterator();
 83  83         //The element is inserted immediately before the next element that would be returned by next
 84  84         //here the nexindex is 0
 85  85         listIter.add("goods end");
 86  86         System.out.println("previous index is :"+listIter.previousIndex()+" "
 87  87                             +"previous element is "+listIter.previous());
 88  88         System.out.println("Change the last element of list...");
 89  89         listIter.set("goods end changed");
 90  90         System.out.println("正向遍历Starting...");
 91  91         while(listIter.hasNext()){
 92  92             System.out.println(listIter.next());
 93  93         }
 94  94         System.out.println("反向遍历Starting...");
 95  95         while(listIter.hasPrevious()){
 96  96             System.out.println(listIter.previous());
 97  97         }
 98  98         //Removes from the list the last element that was returned by next or previous
 99  99         //Becareful: just one element every call
100 100         listIter.remove();
101 101     }
102 102
103 103     //add element : stdin
104 104     public void addElementStandard(List<Integer> list){
105 105         BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
106 106         try {
107 107             String str[]=br.readLine().split(",");//split element with ‘,‘
108 108             for(String ss:str){
109 109                 list.add(Integer.parseInt(ss));
110 110             }
111 111         } catch (IOException e) {
112 112             System.out.println("Error happended!!!");
113 113             e.printStackTrace();
114 114         }
115 115     }
116 116
117 117     public void sortList(List<Integer> list){
118 118         Object[] sortedList=list.toArray();
119 119         Arrays.sort(sortedList);
120 120
121 121         for(Object obj:sortedList){
122 122             System.out.print(obj+" ");
123 123         }
124 124     }
125 125 }
126 126 //:~
127
128
129
130  

以上代码是对Java容器中List接口方法应用的各种实现,包括列表元素的增删改查。下面逐一做详细介绍:

1、增加列表元素

向列表中增加元素,总体来说有两类,即使用add()或addAll(),前者是向列表中直接插入指定的单个元素,而后者则是添加指定 collection 中的所有元素到此列表。

此外,可以指定向列表中插入元素的位置,这就将add()又细分为:add(E e)  add(int index, E element),前者默认在列表尾部增加元素,后者则在指定位置插入元素。

<addAll()的划分同add()>

2、删除列表元素

  Java API中,关于列表的删除操作有:remove()、removeAll()以及clear(),clear()将同时删除列表中的所有元素,但列表本身还是存在的,remove()依

据参数类型的不同,既可以实现删除指定位置的元素,也可以在不知道元素位置而知道列表中包含此元素时实现删除指定的元素,但此时只是删除第一次出现的指定元素,若

想删除列表中所有与指定元素相同的元素,可以循环调用remove(Object obj)直到列表中已不存在该元素。removeAll()则是实现从列表中移除指定 collection 中包含的

所有元素示例如下:

  

 1 List<String> lis=new ArrayList<String>();
 2         lis.add("one");
 3         lis.add("two");
 4         lis.add("three");
 5         lis.add("one");
 6         lis.add("four");
 7         lis.add("one");
 8         lis.remove("one");
 9         for(String s:lis){
10             System.out.println(s);
11         }
12         System.out.println("~~~~~~~~~~~~~~~");
13         while(lis.contains("one")){
14             lis.remove("one");
15         }
16         for(String s:lis){
17             System.out.println(s);
18         }

3、改变列表中已有元素

  改变列表中已有元素,主要通过set()方法实现,该方法包含两个参数,实现用指定元素(参数2)替换列表中指定位置(参数1)的元素。

4、查找列表元素

  同增删操作类似,查找也分为contains()和cotainsAll()两类,在此不再赘述。

【说明:】

  List接口所提供的还有其他很多方法,本文只说明了方法名称,未详细表明方法参数,具体请参照JAVA API。

Java 容器:Collection 初探之 List

时间: 2024-10-08 09:29:29

Java 容器:Collection 初探之 List的相关文章

java 容器Collection List Set Map概述

对JAVA的集合的理解是想对于数组 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型) JAVA集合可以存储和操作数目不固定的一组数据. 所有的JAVA集合都位于 java.util包中! JAVA集合只能存放引用类型的的数据,不能存放基本数据类型. JAVA集合主要分为三种类型: Set(集) List(列表) Map(映射) Collection 接口 Collection是最基本的集合接口,声明了适用于JAVA集合(只包括Set和List)的通用方法. Set 和

java容器collection的一些简单特点

1.List ArrayList 可随机访问元素,但中间插入和一处元素较慢 LinkedList 在中间进行的插入和删除操作代价较小,随机访问比ArrayList较慢 特性集比ArrayList大 2.set HashSet 无序 使用散列函数 TreeSet 有顺序,按升序 将元素存储在红黑树中 LinkHashSet 有顺序,按插入顺序 因查询速度的原因也用了散列 使用了链表来维护元素的插入顺序 3.map 同set HashMap TreeMap LinkedHashMap

【Java心得总结五】Java容器中——Collection

在[Java心得总结五]Java容器上——容器初探这篇博文中,我对Java容器类库从一个整体的偏向于宏观的角度初步认识了Java容器类库.而在这篇博文中,我想着重对容器类库中的Collection容器做一个着重的探索与总结. Collection:一个独立元素的序列,这些元素都服从一条或多条规则.(注:Collection其实就是将一组数据对象按照一维线性的方式组织起来)List必须按照插入的顺序保存元素,而set不能有重复元素.Queue按照排队规则来确定对象产生的顺序(通常与它们被插入的顺序

【Java心得总结五】Java容器上——容器初探

在数学中我们有集合的概念,所谓的一个集合,就是将数个对象归类而分成为一个或数个形态各异的大小整体. 一般来讲,集合是具有某种特性的事物的整体,或是一些确认对象的汇集.构成集合的事物或对象称作元素或是成员.集合具有:无序性.互异性.确定性. 而在我们计算机科学种集合的定义是:集合是一组可变数量的数据项(也可能是0个)的组合,这些数据项可能共享某些特征,需要以某种操作方式一起进行操作.一般来讲,这些数据项的类型是相同的,或基类相同(若使用的语言支持继承).列表(或数组)通常不被认为是集合,因为其大小

java容器的理解(collection)

容器类(Conllection)对于一个开发者来说是最强大的工具之一,可以大幅提高编程能力.容器是一个将多个元素组合到一个单元的对象,是代表一组对象的对象,容器中的对象成为它的元素. 容器适用于处理各种类型的对象的聚集,例如存储.获取.操纵聚合数据,以及聚合数据的通信.容器只保存Object的引用,因为这是所有类的基类,因此,容器可以保存任何类的对象. 容器框架包括以下元素: 接口:它们代表容器类型的抽象数据类型.整个java容器类的基础都是容器接口,而不是类.最大的好处就在于将容器的实现和容器

java容器的两大类Collection和Map

java容器包括Collection和Map两种,Collection储存着对象的集合,而Map储存着键值对(两个对象)的映射表. Collection: 1)Set ·TreeSet ·HashSet ·LinkedHashSet 2)List ·ArrayList(基于动态数组实现,线程不安全) ·Vector (线程安全的,同步的,开销必ArrayList大,访问速度更忙.Vector 每次扩容请求其大小的 2 倍空间,而 ArrayList 是 1.5 倍) ·LinkedList(基于

[java学习]java容器源码初探(1)

一.动态数组ArrayList 在我们开发者眼中,这就是一个"动态数组",可以"动态"地调整数组的大小,虽然说数组从定义了长度后,就不能改变大小. 实现"动态"调整的基本原理就是:按照某个调整策略,重新创建一个调整后一样大小的数组,然后将原来的数组赋值回去. 下面我们来解析一下几个与数组不一样的方法. 看看ArrayList中主要的几个字段(源码剖析): // 默认的初始数组大小 private static final int DEFAULT_

【Java心得总结七】Java容器下——Map

我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角度对Java中强大的容器类库做了一个简单总结而第二篇专门针对容器类库中的Collection部分进行了总结.这篇博文将对容器类库中的Map部分进行一个整理总结. 一.初识Map Map:一组成对的“键值对”对象,允许你使用键来查找值.(注:Map其实是将键与值形成的二元组按照一维线性的方式组织起来,

Java 容器 & 泛型:一、认识容器

Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 容器是Java语言学习中重要的一部分.泥瓦匠我的感觉是刚开始挺难学的,但等你熟悉它,接触多了,也就"顺理成章"地知道了.Java的容器类主要由两个接口派生而出:Collection和Map. 一.Collection vs Collections 首先,Collection 和 Collections 是两个不同的概念.之所以放在一起,是为了更好的比较.Collection是容器层次结构中