1.用代码说话

 package JavaProject;
import java.util.*; public class A{
public static void main(String[]args){
List<String> list=new ArrayList<String>(Arrays.asList("ab","cd","ef","gh")); /**
*list.add(param1),list列表末尾插入param1,
*list.addAll(param1),list列表末尾插入param1,param1是列表
*list.add(param1,param2);或者list.addAll(param1,param2),均表示在param1处插入param2插入
*eg:list.add(0,"ij");
*eg:list.addAll(1,Arrays.asList("kl","mn"));
*/ /**
*list.remove(0);//return list(0)
*list.remove(new String("cd"));//return boolean 找不到,返回-1
*list.removeAll(Arrays.asList("gh","ef"));//return boolean 找不到返回-1
*/ /**
*list.set(0,"dkdkd");//替换
*/ /**
*list2.set(0,"ddddddd");
*System.out.println(list);//[ddddddd, cd, ef, gh]
*可见sublist函数维护者原list对象的引用。
*因此对list2的操纵同样会在list中反应出来
*/ /**
*list.get(param1);//获取param1位值,list.get(0);
*list.indexOf(param2)//获取param2的序号,list.indexOf("ab"); 找不到,返回-1
*/ /**
*下面是对列表排序,打乱顺序的两种方法
*Collections.sort(list2);
*Collections.shuffle(list2);
*/ /**
*@param 从较大列表中创建片段,前开后闭
*List<String> list2=list.subList(0,2);
*/ /**
*!!!注意 sublist函数虽然是从较大列表中创建出一个片断,
*但是subList()所产生的列表的幕后就是初始列表,因此,对所返回的列表的修改都会
*反应到初始列表中,反之亦然!
*List<String> list2=list.subList(0,3);
*List<String> list3=list.subList(2,3);
*System.out.println(list2.retainAll(list3));//throw Exception,具体原因不明
*大概是因为,list2,list3同时list的片断,list2,移除操作造成list3被更改!
=================================================================
*List<String> list2=list.subList(0,3);
*List<String> list3=list.subList(2,3);
*list2.remove(0);
*System.out.println(list3);//Exception,这里抛出异常可以解释上面retainAll抛出异常的原因
*/ /**
*Collection的retainAll函数的用法是求交集
JDK1.6中的源码: public boolean retainAll(Collection<?> c){
boolean modified = false;
Iterator<E> e = iterator();
while (e.hasNext()){
if (!c.contains(e.next())){
e.remove();
modified = true;
}
}
return modified;
}
*所以此函数的意思是:
*仅保留当前collection中那些也包含在指定参数collection中元素
*如果当前collection因为调用该函数发生了改变,就返回true,否则,false。
*/ /**
*无论是直接应用字符串常量,还是显式new创建String对象
*(应为String变量默认的equals方法是只要内容想用就返回true)
*以及顺序如何,都不影响containsAll的结果
*/ /**
*class Pet{}
*注意自定义对象默认的equals方法,是比较是同一个对象。
*List<Pet> pets=new ArrayList<Pet>();
*pets.add(new Pet());
*System.out.println(pets.indexOf(new Pet()));//-1 ,pets.contains(new Pet())false
*/ /**
*list.toArray
*toArray 方法将任意的Collection转换为一个数组,这是一个重载方法
*其无参数版本返回的是Object数组,如String str[]=list.toArray();将报类型转换错误
*如果向重载版本传递目标类型的数据,并且能通过类型检查,则将产生制定类型的数据。
*例如:String []str=list.toArray(new String[0]);
*/
/**
*如果参数数组太小,存放不下List中的所有元素,toArray()方法将创建一个合适大小的数组
*String []str=new String[2];
*str=list.toArray(new String[0]);
*System.out.println(Arrays.toString(str));
*/
//list.clear();清空列表
//list.size();列表大小
//list.isEmpty();列表是否为空
}
}

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

  1. Java编程思想阅读收获

    15年8月份买了一本Java编程思想第四版中文版.之所以买中文版是因为我试读了同事的英文版发现自己英语水平还是有限,单词虽然认识,但对很多句子把握不准,这样看书太慢了,要理解英文还要理解技术有些hol ...

  2. 【Java编程思想阅读笔记】Java数据存储位置

    Java数据存储位置 P46页有感 一.前置知识 栈是由系统自动分配的,Java程序员对栈没有直接的操作权限, 堆是所有线程共享的内存区域,栈 是每个线程独享的. 堆是由程序员自己申请的,在使用new ...

  3. java编程思想阅读记录

    第五章:初始化与清理 1.构造器确保初始化 构造器采用与类名相同的方法. 创建对象时,将会为对象分配存储空间,并调用相应的构造器.这就确保了在你能操作对象之前,它就已经恰当的被初始化了. 垃圾回收器负 ...

  4. java编程思想第九章接口

    9.1抽象类和抽象方法 为什么要有抽象类? 是希望通过通用接口操作一系列类. 那么抽象类的形式是什么样的呢? 声明类的使用使用abstract关键字,且在该类中应该具有抽象方法. 注:抽象方法被关键字 ...

  5. java 方法调用绑定--《java编程思想》学习笔记

    将一个方法调用同一个方法主体关联起来,就是绑定. 绑定分两种 :前期绑定 和 后期绑定 . 绑定------------- | -----前期绑定-------编译期绑定 { static , fin ...

  6. Java编程思想读书笔记(一)【对象导论】

    2018年1月7日15:45:58 前言 作为学习Java语言的经典之作<Java编程思想>,常常被人提起.虽然这本书出版十年有余,但是内容还是很给力的.很多人说这本书不是很适合初学者,我 ...

  7. JAVA编程思想——分析阅读

    需要源码.JDK1.6 .编码风格参考阿里java规约 7/12开始 有点意识到自己喜欢理论大而泛的模糊知识的学习,而不喜欢实践和细节的打磨,是因为粗心浮躁导致的么? cron表达式使用 设计能力.领 ...

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

    Java编程思想重点笔记(Java开发必看)   Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而 ...

  9. Java编程思想——初始化与清理

    PS:最近一直忙于项目开发..所以一直没有写博客..趁着空闲期间来一发.. 学习内容: 1.初始化 2.清理 1.初始化   虽然自己的Java基础还是比较良好的..但是在解读编程思想的时候还是发现了 ...

随机推荐

  1. MySQL排序原理与案例分析

    前言      排序是数据库中的一个基本功能,MySQL也不例外.用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct ...

  2. .NET和JAVA中BYTE的区别以及JAVA中“DES/CBC/PKCS5PADDING” 加密解密在.NET中的实现

    场景:java 作为客户端调用已有的一个.net写的server的webservice,输入string,返回字节数组. 问题:返回的值不是自己想要的,跟.net客户端直接调用总是有差距 分析:平台不 ...

  3. BZOJ 3289: Mato的文件管理[莫队算法 树状数组]

    3289: Mato的文件管理 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 2399  Solved: 988[Submit][Status][Di ...

  4. Java程序设计之算出一年第多少天

    可以直接拷贝运行. package year; import java.util.Scanner; public class year { public static void main(String ...

  5. 威佐夫博弈(Wythoff Game)

    有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后把石子全部取完者为胜者. ...

  6. Linux的一些基本概述以及系统使用

    GNU:项目名称(意指开发在类UNIX系统上的软件).POSIX:可移植(Portable)操作系统接口,便于程序在不同操作系统上运行. Linux是符合POSIX标准的操作系统: 完全兼容POSIX ...

  7. <转>MySQL性能调优的10个方法

    文章原地址:http://mp.weixin.qq.com/s/oRXJRz_Y5drmIrcbxSKOcw 1. 选择合适的存储引擎: InnoDB 除非你的数据表使用来做只读或者全文检索 (相信现 ...

  8. click与 mousedown

    一.想做出鼠标右键 自己定义的菜单 则需要先使用 document.oncontextmenu= functions(){ event.preventDefault()//去除鼠标右键的默认格式 } ...

  9. VS 生成事件

    转载自: http://hi.baidu.com/gisince/item/7f0439ee610c94255a2d64b4 今天写了生成事件的处理,如下: 从网上Down了一个例子,运行时提示错误 ...

  10. D3D三层Texture纹理经像素着色器实现渲染YUV420P

    简单记录一下这两天用Texture实现渲染YUV420P的一些要点. 在视频播放的过程中,有的时候解码出来的数据是YUV420P的.表面(surface)通过设置参数是可以渲染YUV420P的,但Te ...