List接口方法使用(PS:Java 编程思想阅读小结)
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 编程思想阅读小结)的更多相关文章
- Java编程思想阅读收获
15年8月份买了一本Java编程思想第四版中文版.之所以买中文版是因为我试读了同事的英文版发现自己英语水平还是有限,单词虽然认识,但对很多句子把握不准,这样看书太慢了,要理解英文还要理解技术有些hol ...
- 【Java编程思想阅读笔记】Java数据存储位置
Java数据存储位置 P46页有感 一.前置知识 栈是由系统自动分配的,Java程序员对栈没有直接的操作权限, 堆是所有线程共享的内存区域,栈 是每个线程独享的. 堆是由程序员自己申请的,在使用new ...
- java编程思想阅读记录
第五章:初始化与清理 1.构造器确保初始化 构造器采用与类名相同的方法. 创建对象时,将会为对象分配存储空间,并调用相应的构造器.这就确保了在你能操作对象之前,它就已经恰当的被初始化了. 垃圾回收器负 ...
- java编程思想第九章接口
9.1抽象类和抽象方法 为什么要有抽象类? 是希望通过通用接口操作一系列类. 那么抽象类的形式是什么样的呢? 声明类的使用使用abstract关键字,且在该类中应该具有抽象方法. 注:抽象方法被关键字 ...
- java 方法调用绑定--《java编程思想》学习笔记
将一个方法调用同一个方法主体关联起来,就是绑定. 绑定分两种 :前期绑定 和 后期绑定 . 绑定------------- | -----前期绑定-------编译期绑定 { static , fin ...
- Java编程思想读书笔记(一)【对象导论】
2018年1月7日15:45:58 前言 作为学习Java语言的经典之作<Java编程思想>,常常被人提起.虽然这本书出版十年有余,但是内容还是很给力的.很多人说这本书不是很适合初学者,我 ...
- JAVA编程思想——分析阅读
需要源码.JDK1.6 .编码风格参考阿里java规约 7/12开始 有点意识到自己喜欢理论大而泛的模糊知识的学习,而不喜欢实践和细节的打磨,是因为粗心浮躁导致的么? cron表达式使用 设计能力.领 ...
- Java编程思想重点笔记(Java开发必看)
Java编程思想重点笔记(Java开发必看) Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而 ...
- Java编程思想——初始化与清理
PS:最近一直忙于项目开发..所以一直没有写博客..趁着空闲期间来一发.. 学习内容: 1.初始化 2.清理 1.初始化 虽然自己的Java基础还是比较良好的..但是在解读编程思想的时候还是发现了 ...
随机推荐
- 开源监控软件ganglia安装手册
Ganglia是一个监控服务器,集群的开源软件,能够用曲线图表现最近一个小时,最近一天,最近一周,最近一月,最近一年的服务器或者集群的cpu负载,内存,网络,硬盘等指标. Ganglia的强大在于:g ...
- python学习笔记-import utils报错
今天遇到一个坑爹的问题,查找了半天原因,终于解决了,在此特地记录一下. 运行环境:Windows eclipse 我在eclipse中配置了python的运行环境,在eclipse中编写python代 ...
- Web site collections
Integration 伯乐在线 极客头条 Hacker News Stack Overflow RFC Search Security Python Hacker - Freebuf PrimalS ...
- 【原】移动web滑屏框架分享
本月26号参加webrebuild深圳站,会上听了彪叔的对初心的讲解,“工匠精神”这个词又一次被提出,也再次引起了我对它的思考.专注一个项目并把它做得好,很好,更好...现实工作中,忙忙碌碌,抱着完成 ...
- maven 详解
Maven是基于项目对象模型(POM)的,可以通过一小段描述信息来管理项目构建,报告和文档的软件项目管理工具,是一种全新的项目构建方式,让我们的开发更加简单,高效.Maven主要做的是两件事: 开发规 ...
- 东软HIS切换输入法卡死的解决方法
在文字选项的第二页上,勾选上边的相容性设定,然后重启电脑:
- PCD文件去除曲率的脚本
在写一个重建算法的时候需要用到点坐标和法向的数据文件,于是向利用pcl中的法向计算模块来生成法向.输出后法向文件中包含曲率信息,但是这是不需要的.于是自己写了一个python小脚本实现格式转换. #- ...
- [LeetCode] Kth Largest Element in an Array 数组中第k大的数字
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...
- 在WPF程序中打开网页:使用代理服务器并可进行JS交互
本项目环境:使用VS2010(C#)编写的WPF程序,通过CefSharp在程序的窗体中打开网页.需要能够实现网页后台JS代码中调用的方法,从网页接收数据,并能返回数据给网页.运行程序的电脑不允许上网 ...
- 时间格式转换—将后台返回的/Date(1448954018000)/格式转换为正常的时间格式
用JS实现方法: function ChangeDateFormat(cellval) { )); < ? ) : date.getMonth() + ; ? " + date.get ...