泛型,迭代器,LinkedList<E>
1 <e>里面只能填类,不能用基本数据类型,不过integer 这样的的也行
2在模板类(泛型类中)class demo<e>由于不知道e是那个,所有通常都是重写大家都有的toString()方法来调用
泛型的作用主要是为了建立具有类型安全的数据结构
如果没有泛型
LinkedList 使用add方法的时候,由于所有类都是object的子类,所以都可以添加
String s=(String) linkedList1.get(i)需要类型转换
然而有了泛型就没有上面的问题,LinkedList<String>已经说明了都是String
测试代码
package cgfg;
public class Test{
public static void main(String args[]){
bb test1=new bb(1);
bb test2=new bb(2);
demo<bb> demo1=new demo<bb>();
demo<bb> demo2=new demo<bb>();
demo1.setE(test1);
demo2.setE(test2);
demo1.show();
demo2.show();
}
}
class demo<E>{
E e;
void setE(E a){
e=a;
}
void show(){
String s=e.toString();
double a=Double.parseDouble(s)*2;
System.out.println(a);
}
}
class bb{
double a;
bb(double a){
this.a=a;
}
public String toString(){
return ""+a;
}
}
迭代器
迭代器比手动遍历快,一般的迭代器用法
Iterator<String> iterator1=list1.iterator();
for(;iterator1.hasNext();){
String s=iterator1.next();
}
完整测试
package cgfg; import java.util.Iterator;
import java.util.LinkedList; public class Test{
public static void main(String args[]){
LinkedList<String> list1=new LinkedList<String>();
for(int i=0;i<60000;i++){
list1.add(i+"");
}
Iterator<String> iterator1=list1.iterator();
long start=System.currentTimeMillis();
for(;iterator1.hasNext();){
String s=iterator1.next();
}
long end=System.currentTimeMillis();
System.out.println(end-start);
start=System.currentTimeMillis();
for(int i=0;i<list1.size();i++){
String s=list1.get(i);
}
end=System.currentTimeMillis();
System.out.println(end-start);
}
}
LinkedList<e>常用方法
public boolean add(E e)
public void add(index ,E e)//在一个位置添加
public void clear()//全部清除
public E remove(int index)//按位置删除
public boolean remove(E e)//按值删除
public E get(index)//得到该位置的值
public int indexOf(E e)//得到该值的位置
public E set(int a,E e)//把 a 位置的值改为 e
public int size()//返回大小
public E getFirst()
public E getLast()
public E removeFirst()
public E removeLast()
public Object clone()//返回一个克隆的链表
泛型,迭代器,LinkedList<E>的更多相关文章
- Java—增强for循环与for循环的区别/泛型通配符/LinkedList集合
增强for循环 增强for循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的. 它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作. ...
- 迭代器Iterator、for循环遍历、泛型
java.util.Collection接口 是集合的最顶层的接口,定义了集合共性的方法 接口无法直接创建对象,使用多态的方式创建对象 Collection<集合中的数据类型(泛型)> c ...
- Java泛型学习笔记--Java泛型和C#泛型比较学习(一)
总结Java的泛型前,先简单的介绍下C#的泛型,通过对比,比较学习Java泛型的目的和设计意图.C#泛型是C#语言2.0和通用语言运行时(CLR)同时支持的一个特性(这一点是导致C#泛型和Java泛型 ...
- java源码学习(五)LinkedList
LinkedList [TOC] 一.定义 public class LinkedList<E> extends AbstractSequentialList<E> imple ...
- java基础(7)集合与泛型
第一部分:Collection集合 1 collection集合概述 集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map. C ...
- 01 语言基础+高级:1-6 集合_day02【Collection、泛型】
day02[Collection.泛型] 主要内容 Collection集合 迭代器 增强for 泛型 教学目标 能够说出集合与数组的区别 说出Collection集合的常用功能 能够使用迭代器对集合 ...
- java语言进阶(二)_Collection_泛型
主要内容 Collection集合 迭代器 增强for 泛型 第一章 Collection集合 1.1 集合概述 在前面基础班我们已经学习过并使用过集合ArrayList ,那么集合到底是什么呢? 集 ...
- JDK1.8源码(六)——java.util.LinkedList 类
上一篇博客我们介绍了List集合的一种典型实现 ArrayList,我们知道 ArrayList 是由数组构成的,本篇博客我们介绍 List 集合的另一种典型实现 LinkedList,这是一个有链表 ...
- Java 泛型学习总结
前言 Java 5 添加了泛型,提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型. 泛型的本质是参数化类型,可以为以前处理通用对象的类和方法,指定具体的对象类型.听起来有点抽象, ...
- Java之Iterator接口(遍历单列集合的迭代器)
Iterator接口概述 在程序开发中,经常需要遍历集合中的所有元素.针对这种需求,JDK专门提供了一个接口java.util.Iterator . Iterator 接口也是Java集合中的一员,但 ...
随机推荐
- 通过预编译头文件来提高C++ Builder的编译速度
C++ Builder是最快的C++编译器之一,从编译速度来说也可以说是最快的win32C++编译器了.除了速度之外,C++builder的性能也在其它C++编译器的之上,但许多Delphi程序员仍受 ...
- 深入浅出 Java Concurrency (4): 原子操作 part 3 指令重排序与happens-before法则
转: http://www.blogjava.net/xylz/archive/2010/07/03/325168.html 在这个小结里面重点讨论原子操作的原理和设计思想. 由于在下一个章节中会谈到 ...
- 约瑟夫环问题-Java数组解决
约瑟夫环问题说的是,n个人围成一圈,从第k个人开始沿着一个方向报数,报到第m个人时,第m个人出列,从紧挨着的下一个人(未出列)开始,求整个环中人的出列顺序.下面是我用java实现的解决方法. clas ...
- How many - HDU 2609 (trie+最小表示)
题目大意:有 N 个手链,每个手链的最大长度不超过100,求出来最多有多少个不同的手链. 分析:因为手链是可以转动的,所以只要两个手链通过转动达到相同,那么也被认为是一种手链,然而如果每次都循环比 ...
- 拥有最小高度能自适应高度,IE、FF全兼容的div设置
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " http://www.w3.org/TR/xh ...
- 平衡树(AVL)详解
1. 为什么平衡树? 在二叉搜索树(BST,Binary Search Tree)中提到,BST树可能会退化成一个链表(整棵树中只有左子树,或者只有右子树),这将大大影响二叉树的性能. 前苏联科学家G ...
- HDU 4118 树形DP Holiday's Accommodation
题目链接: HDU 4118 Holiday's Accommodation 分析: 可以知道每条边要走的次数刚好的是这条边两端的点数的最小值的两倍. 代码: #include<iostrea ...
- [转载]Web前端和后端之区分,以及面临的挑战
原文地址:Web前端和后端之区分,以及面临的挑战[转]作者:joyostyle 在我们实际的开发过程中,我们当前这样定位前端.后端开发人员. 1)前端开发人员:精通JS,能熟练应用JQuery,懂CS ...
- jQuery常用事件详解
window.onload:在浏览器加载web页面时触发,可以写多次onload事件,但后者覆盖前者 ready:在浏览器加载web页面时触发,可以写多次ready事件,不会后者覆盖前者,依次从上向下 ...
- 【.NET调用Python脚本】C#调用python requests类库报错 'module' object has no attribute '_getframe' - IronPython 2.7
最近在开发微信公众号,有一个自定义消息回复的需求 比如用户:麻烦帮我查询一下北京的天气? 系统回复:北京天气,晴,-℃... 这时候需要根据关键字[北京][天气],分词匹配需要执行的操作,然后去调用天 ...