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 }
  • 相关阅读:
    Bootstrap 2.2.2 的新特性
    Apache POI 3.9 发布,性能显著提升
    SQL Relay 0.48 发布,数据库中继器
    ProjectForge 4.2.0 发布,项目管理系统
    红帽企业 Linux 发布 6.4 Beta 版本
    红薯 快速的 MySQL 本地和远程密码破解
    MariaDB 宣布成立基金会
    Percona XtraBackup 2.0.4 发布
    Rocks 6.1 发布,光盘机群解决方案
    精通Servlet研究,HttpServlet的实现追究
  • 原文地址:https://www.cnblogs.com/MyBlog-Richard/p/5539524.html
Copyright © 2011-2022 走看看