zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    PHP合并数组array_merge函数运算符加号与的区别
    PHP 字符串为空
    50段超实用CSS代码(1)
    WCF 第三章 信道 总结
    WCF 第三章 信道 操作契约和信道形状
    WCF 第三章 信道
    WCF 第三章 信道形状
    WCF 第二章 契约 数据契约版本
    WCF 第二章 契约 消息契约
    WCF 第二章 契约 系列文章
  • 原文地址:https://www.cnblogs.com/MyBlog-Richard/p/5539524.html
Copyright © 2011-2022 走看看