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 }
时间: 2024-10-08 15:25:19

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

Java编程思想之8多态

这一章看下来,感觉比较混乱.乱感觉主要乱在8.4  8.5. 开始读的时候,感觉8.1 8.2 8.3都挺乱的.读了两遍后发现前三节还是比较有条理的. 8.1主要讲了什么是多态,多态的好处. 8.2主要讲了什么情况会发生多态?? 8.3主要讲了构造器内部里面的方法调用会发生多态. 8.4就一页,而且感觉一般用不到.用到了再看也行. 8.5也很简单,相当于一个总结,一个补充(向下转型) 我主要根据书上的内容,总结两个内容: 1.什么是多态,多态的好处: 2.什么情况下会发生多态?为什么这些情况下会

74.JAVA编程思想——远程方法

74.JAVA编程思想--远程方法 为通过网络执行其他机器上的代码,传统的方法不仅难以学习和掌握,也极易出错.思考这个问题最佳的方式是:某些对象正好位于另一台机器,我们可向它们发送一条消息,并获得返回结果,就象那些对象位于自己的本地机器一样.Java 1.1 的"远程方法调用"(RMI)采用的正是这种抽象.将引导大家经历一些必要的步骤,创建自己的RMI 对象. 1     远程接口概念 RMI 对接口有着强烈的依赖.在需要创建一个远程对象的时候,我们通过传递一个接口来隐藏基层的实施细节

56 java编程思想——创建窗口和程序片 用户接口API

56.java编程思想--创建窗口和程序片 用户接口API Java 1.1 版同样增加了一些重要的新功能,包括焦点遍历,桌面色彩访问,打印"沙箱内"及早期的剪贴板支持. 焦点遍历十分的简单,因为它显然存在于AWT 库里的组件并且我们不必为使它工作而去做任何事.如果我们制造我们自己组件并且想使它们去处理焦点遍历,我们过载isFocusTraversable()以使它返回真值.如果我们想在一个鼠标单击上捕捉键盘焦点,我们可以捕捉鼠标按下事件并且调用requestFocus()需求焦点方法

39.JAVA编程思想之外篇——JAVA图形化设计精简大全一文覆盖

39.JAVA编程思想之外篇--JAVA图形化设计精简大全一文覆盖 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51204948 目录 Java图形化界面设计--容器(JFrame)...1 Java基本类(JFC)...1 l     AWTAbstract Window Toolkit(AWT)抽象窗口工具包... 2 l     Swing包... 2 l     AWT和Swing的区别... 6 Swing基本框

Java编程思想总结(一)对象导论

Java编程思想总结(一)对象导论 1.1 抽象过程 万物皆对象. 程序是对象的集合(即:类),他们通过发送消息(调用方法)来告知彼此要做的. 每个对象都有自己的由其他对象所构成的存储(引用其他对象或基本类型,即组合). 每个对象都拥有其类型.每个类最重要的区别于其他类的特征就是“可以发送什么样的消息给它”(即调用方法). 某一特定类型的所有对象都可以接受同样的消息. 对象具有状态(成员属性).行为(成员方法)和标识(引用的名称).每个对象在内存中都有唯一的一个地址. 1.2 每个对象都有一个接

《Java编程思想(第4版)》pdf

下载地址:网盘下载 内容简介 编辑 本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面前也会化解于无形.从Java的基础语法到最高级特性(深入的面向对象概念.多线程.自动项目构建.单元测试和调试等),本书都能逐步指导你轻松掌握.[1] 从本书获得的各项大奖以及来自世界各地的读者评论中,不难看出这是一本经典之作.本书的作者拥有多年教学经验,对C.C++以及Java语言都有独到.深入的见解,以通俗易懂及小而直接的示例解释了一个个晦涩抽象的概

java编程思想第1、2、3章细节总结

转眼已经大二学期的暑假,已经使用java有一年了,才开始看thinking in java 这本经典书籍,算是做个系统总结吧,只列一些目前还掌握不熟的需要谨记的知识点. 第一章:对象导论 1.java中的权限:public,protected,private,default. public:可以被任何对象访问. protected:只能在本类和本类的内部类中使用,通过继承操作可以继承下去. private:只能在本类和本类的内部类中使用. default:如果没有加任何权限,则默认就是这个def

Java编程思想重点笔记(Java开发必看)

Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面 试过程中,而且在大型项目开发中也是常用的知识,既有简单的概念理解题(比如is-a关系和has-a关系的区别),也有深入的涉及RTTI和JVM底层 反编译知识. 1. Java中的多态性理解(注意与C++区分) Java中除了static方法和final方法(private方法本质上属于final方法,因为不能被子类访问)之外,其它所有的方法都是动态绑定,这意

1.JAVA 编程思想——对象入门

对象入门 欢迎转载,转载请标明出处:    http://blog.csdn.net/notbaron/article/details/51040219 如果学JAVA,没有读透<JAVA 编程思想>这本书,实在不好意思和别人说自己学过JAVA.鉴于此,蛤蟆忙里偷闲,偷偷翻看这本传说中的牛书. 面向对象编程OOP具有多方面吸引力.实现了更快和更廉价的开发与维护过程.对分析与设计人员,建模处理变得更加简单,能生成清晰.已于维护的设计方案. 这些描述看上去非常吸引人的,不过蛤蟆还是没啥印象(至少到