List接口方法使用(PS:Java 编程思想阅读小结)

Posted 修行之悟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了List接口方法使用(PS:Java 编程思想阅读小结)相关的知识,希望对你有一定的参考价值。

1.用代码说话

  1 package JavaProject;
  2 import java.util.*;
  3 
  4 public class A{
  5     public static void main(String[]args){
  6         List<String> list=new ArrayList<String>(Arrays.asList("ab","cd","ef","gh"));
  7         
  8         /**
  9         *list.add(param1),list列表末尾插入param1,
 10         *list.addAll(param1),list列表末尾插入param1,param1是列表
 11         *list.add(param1,param2);或者list.addAll(param1,param2),均表示在param1处插入param2插入
 12         *eg:list.add(0,"ij");
 13         *eg:list.addAll(1,Arrays.asList("kl","mn"));
 14         */
 15         
 16         /**
 17         *list.remove(0);//return list(0)
 18         *list.remove(new String("cd"));//return boolean 找不到,返回-1
 19         *list.removeAll(Arrays.asList("gh","ef"));//return boolean 找不到返回-1
 20         */
 21         
 22         /**
 23         *list.set(0,"dkdkd");//替换
 24         */
 25         
 26         /**
 27         *list2.set(0,"ddddddd");
 28         *System.out.println(list);//[ddddddd, cd, ef, gh]
 29         *可见sublist函数维护者原list对象的引用。
 30         *因此对list2的操纵同样会在list中反应出来
 31         */
 32         
 33         
 34         
 35         /**
 36         *list.get(param1);//获取param1位值,list.get(0);
 37         *list.indexOf(param2)//获取param2的序号,list.indexOf("ab"); 找不到,返回-1
 38         */
 39         
 40         /**
 41         *下面是对列表排序,打乱顺序的两种方法
 42         *Collections.sort(list2);
 43         *Collections.shuffle(list2);
 44         */
 45         
 46         /**
 47         *@param 从较大列表中创建片段,前开后闭
 48         *List<String> list2=list.subList(0,2);
 49         */
 50         
 51         /**
 52         *!!!注意 sublist函数虽然是从较大列表中创建出一个片断,
 53         *但是subList()所产生的列表的幕后就是初始列表,因此,对所返回的列表的修改都会
 54         *反应到初始列表中,反之亦然!
 55         *List<String> list2=list.subList(0,3);
 56         *List<String> list3=list.subList(2,3);
 57         *System.out.println(list2.retainAll(list3));//throw Exception,具体原因不明
 58         *大概是因为,list2,list3同时list的片断,list2,移除操作造成list3被更改!
 59         =================================================================
 60         *List<String> list2=list.subList(0,3);
 61         *List<String> list3=list.subList(2,3);
 62         *list2.remove(0);
 63         *System.out.println(list3);//Exception,这里抛出异常可以解释上面retainAll抛出异常的原因
 64         */
 65             
 66         /**
 67         *Collection的retainAll函数的用法是求交集
 68             JDK1.6中的源码:
 69             
 70             public boolean retainAll(Collection<?> c){
 71             boolean modified = false;
 72             Iterator<E> e = iterator();
 73             while (e.hasNext()){
 74                 if (!c.contains(e.next())){
 75                 e.remove();
 76                 modified = true;
 77                 }
 78             }
 79             return modified;
 80             }
 81         *所以此函数的意思是:
 82         *仅保留当前collection中那些也包含在指定参数collection中元素
 83         *如果当前collection因为调用该函数发生了改变,就返回true,否则,false。
 84         */
 85         
 86         /**
 87         *无论是直接应用字符串常量,还是显式new创建String对象
 88         *(应为String变量默认的equals方法是只要内容想用就返回true)
 89         *以及顺序如何,都不影响containsAll的结果
 90         */
 91         
 92         /**
 93         *class Pet{}
 94         *注意自定义对象默认的equals方法,是比较是同一个对象。
 95         *List<Pet> pets=new ArrayList<Pet>();
 96         *pets.add(new Pet());
 97         *System.out.println(pets.indexOf(new Pet()));//-1 ,pets.contains(new Pet())false
 98         */
 99     
100         /**
101         *list.toArray
102         *toArray 方法将任意的Collection转换为一个数组,这是一个重载方法
103         *其无参数版本返回的是Object数组,如String str[]=list.toArray();将报类型转换错误
104         *如果向重载版本传递目标类型的数据,并且能通过类型检查,则将产生制定类型的数据。
105         *例如:String []str=list.toArray(new String[0]);
106         */
107         /**
108         *如果参数数组太小,存放不下List中的所有元素,toArray()方法将创建一个合适大小的数组
109         *String []str=new String[2];
110         *str=list.toArray(new String[0]);
111         *System.out.println(Arrays.toString(str));
112         */
113         //list.clear();清空列表
114         //list.size();列表大小
115         //list.isEmpty();列表是否为空
116     }
117 }

 

以上是关于List接口方法使用(PS:Java 编程思想阅读小结)的主要内容,如果未能解决你的问题,请参考以下文章

JAVA编程思想(第四版)学习笔记----11.5 List,11.6迭代器

为啥是List list = new ArrayList,而不直接用ArrayList

《Java编程思想》笔记 第十一章 持有对象

java编程思想第九章接口

Java编程思想学习 抽象类和接口

Java编程思想之九 接口