Java系列,《Java核心技术 卷1》,chapter 13,集合
13.1.2 Java类库中的集合接口和迭代器接口
it.remove();
it.remove();//error
而是应该
it.remove();
it.next();
it.remove();
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class LearnCollection {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<String> nameList = new ArrayList<String>();
nameList.add("zhang.san");
nameList.add("li.si");
nameList.add("wang.wu");
nameList.add("zhao.yi");
System.out.println("initial content.");
printCollection(nameList);
printViaIterator(nameList.iterator());
removeViaIterator(nameList.iterator(), "li.si");
System.out.println("");
System.out.println("after remove li.si");
printCollection(nameList);
printViaIterator(nameList.iterator());
}
/**
* remove via iterator
* @param it
* @param value
*/
static void removeViaIterator(Iterator<?> it, String value){
while(it.hasNext()){
if(it.next().toString() == value){
it.remove();
System.out.println(String.format("remove %s success.", value));
return;
}
}
System.out.println(String.format("remove %s failed.", value));
}
/**
* @param it
*/
static void printViaIterator(Iterator<?> it){
System.out.println("Print via iterator:");
while(it.hasNext())
System.out.println(String.format("\titem:%s", it.next().toString()));
}
/**
* @param collection
*/
static void printCollection(Collection<?> collection){
System.out.println("collection content:");
for(Object item: collection){
System.out.println(String.format("\titem:%s", item.toString()));
}
}
}
static void testToArray(){
LinkedList<String> strList = new LinkedList<String>();
strList.add("zhang.san");
strList.add("li.si");
strList.add("wang.wu");
print("filled array is not large enough.");
testToArrayHelper(strList, new String[2]);
print("filled array is large enough.");
testToArrayHelper(strList, new String[3]);
}
static void testToArrayHelper(LinkedList<String> strList, String[] filledArray){
String[] returnedArray = strList.toArray(filledArray);
printArray("filled array:", filledArray);
print("");
printArray("returned array:", returnedArray);
print("");
if(filledArray == returnedArray)
print("filled array is equal returned array.");
else
print("filled array is not equal returned array.");
}
static <T> void printArray(String title, T[] array){
print(title);
for(T item: array){
if(item != null)
print("item:" + item.toString());
else
print("item is null");
}
}
static void print(String info){
System.out.println(info);
}
filled array is not large enough.
filled array:
item is null
item is null
returned array:
item:zhang.san
item:li.si
item:wang.wu
filled array is not equal returned array.
filled array is large enough.
filled array:
item:zhang.san
item:li.si
item:wang.wu
returned array:
item:zhang.san
item:li.si
item:wang.wu
filled array is equal returned array.
static void testListIteratorAdd(){
LinkedList<String> strList = new LinkedList<String>();
strList.add("1");
strList.add("2");
strList.add("3");
print("init content:");
printCollection(strList);
ListIterator<String> it = strList.listIterator();
it.next();
it.add("1.1");
it.add("1.2");
print("after insert 2 item");
printCollection(strList);
}
init content:
collection content:
item:1
item:2
item:3
after insert 2 item
collection content:
item:1
item:1.1
item:1.2
item:2
item:3
static void testListIteratorRemove(){
LinkedList<String> strList = new LinkedList<String>();
strList.add("1");
strList.add("2");
strList.add("3");
print("init content:");
printCollection(strList);
ListIterator<String> it = strList.listIterator();
it.next();
it.remove();//ok
print("after remove 1 item");
printCollection(strList);
it.remove();//error
print("after remove 2 item");
printCollection(strList);
}
init content:
collection content:
item:1
item:2
item:3
after remove 1 item
collection content:
item:2
item:3
Exception in thread "main" java.lang.IllegalStateException
at java.util.LinkedList$ListItr.remove(LinkedList.java:923)
at me.ygc.javabasic.learnJava.LearnCollection.testListIteratorRemove(LearnCollection.java:33)
at me.ygc.javabasic.learnJava.LearnCollection.main(LearnCollection.java:15)
Java系列,《Java核心技术 卷1》,chapter 13,集合的更多相关文章
- 《Java核心技术 卷II 高级特性(原书第9版)》
<Java核心技术 卷II 高级特性(原书第9版)> 基本信息 原书名:Core Java Volume II—Advanced Features(Ninth Edition) 作者: ( ...
- 《Java核心技术卷I》观赏指南
Tomxin7 如果你有想看书的计划,但是还在纠结哪些书值得看,可以简单看看"观赏指南"系列,本文会简单列出书中内容,给还没有买书的朋友提供一个参考. 前言 秋招过去很久了,虽然在 ...
- 《Java核心技术卷1》拾遗
之前对Java的基础知识有过学习,现在开始学习<Java核心技术卷1>,将一些新学的知识点,做简要记录,以备后续回顾: 1.double (1)所有的“非数值”都认为是不相同的 if(x= ...
- java中的数据类型,运算符,字符串,输入输出,控制流,大数值,数组; 《java核心技术卷i》 第三章:java基本程序结构;
<java核心技术卷i> 第三章:java基本程序结构: 每次看书,去总结的时候,总会发现一些新的东西,这次对于java的数组有了更深的了解: java中的数据类型,运算符,字符串,输入输 ...
- java的优点和误解 《java核心技术卷i》第一章
<java核心技术卷i>第一章主要内容包括三点: 1:Java白皮书的关键术语:描述Java的十一个关键字: 2:Java applet 3 :关于Java的常见误解 1:第一章:Ja ...
- Java核心技术·卷 II(原书第10版)分享下载
Java核心技术·卷 II 内容介绍 Java领域最有影响力和价值的著作之一,由拥有20多年教学与研究经验的资深Java技术专家撰写(获Jolt大奖),与<Java编程思想>齐名,10余年 ...
- 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承
<Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...
- 读书笔记-《Java核心技术卷I-基础知识》
1.定时器Timer类 构造定时器时,需要设置一个时间间隔,并告知定时器,当到达时间间隔时需要做什么操作.定时器需要知道调用哪一个方法,并要求传递的对象所属的类实现了java.awt.event包的A ...
- Java核心技术卷阅读随笔--第2章【Java 程序设计环境】
Java 程序设计环境 本章主要介绍如何安装 Java 开发工具包( JDK ) 以及如何编译和运行不同类型的程序: 控制台程序. 图形化应用程序以及 applet.运行 JDK 工具的方法是在终端窗 ...
- Java系列:关于Java中的桥接方法
这两天在看<Java核心技术 卷1>的泛型相关章节,其中说到了在泛型子类中override父类的泛型方法时,编译器会自动生成一个桥接方法,这块有点看不明白. 书上的例子代码如下: publ ...
随机推荐
- iOS之UI--涂鸦画板实例 (有待更新)
首先是搭建框架 其他的略过,直接展示效果: 然后接下来上传搭建好两个控制器框架的源码百度云下载链接: http://pan.baidu.com/s/1skjpDox 密码: ardx ,工程里面还有我 ...
- OC小实例关于init方法不小心的错误
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- tp_link路由器 重新设置
当打不开网站,而提示让我们登录电信猫时,通常是由于突然断电导致的路由器程序错误.重新路由器设置即可. 1.路由器恢复出厂设置 2.用网线分别连接电脑和路由器的LAN口.(也就是将 ...
- PMP 项目管理过程组与知识领域
- Effective Java 27 Favor generic methods
Static utility methods are particularly good candidates for generification. The type parameter list, ...
- JavaScript字符串函数大全
JS自带函数concat将两个或多个字符的文本组合起来,返回一个新的字符串.var a = "hello";var b = ",world";var c = a ...
- Sql Server 高频,高并发访问中的键查找死锁解析
死锁对于DBA或是数据库开发人员而言并不陌生,它的引发多种多样,一般而言,数据库应用的开发者在设计时都会有一定的考量进而尽量避免死锁的产生.但有时因为一些特殊应用场景如高频查询,高并发查询下由于数据库 ...
- 【mysql】关于Index Condition Pushdown特性
ICP简介 Index Condition Pushdown (ICP) is an optimization for the case where MySQL retrieves rows from ...
- oracle树操作(select start with connect by prior)
oracle中的递归查询可以使用:select .. start with .. connect by .. prior 下面将会讲述oracle中树形查询的常用方式,只涉及到一张表. 一. 建表语句 ...
- QT的QWebView显示网页不全
最近使用QWebView控件遇到一个问题,就是无论窗口多大,网页都显示那么大,而且,显示不完全,有滚动条 试过使用showMaximized()方法, 还是一样,网上一直说是布局问题,也没说清楚是虾米 ...