- 浏览: 1588943 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
Collection集合框架
Collection的操作
Vector
ArrayList的使用
ArrayList的练习
import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; /*** *Cellection * |--List:元素是有序的,元素可以重复,因为该集合体系有索引. * |--ArrayList :底层的数据结构使用的是数组结构,特点: (查询,修改)速度很快,但是(插入删除)很慢 ,线程不同步 * |--LinkedList :底层使用的是链表数据结构,特点: (查询,修改)慢,(插入,删除)快! 线程不同步 * |--Vector :元老级干部 1.0的时候 就是Vector天下,1.2后 集合框架才出来. * 特点 :线程同步, * 底层是数据结构是数组结构.被ArrayList替代了. * 如果后期要用到同步的,那么也不使用vector,需要自己加锁. * * 数组结构 的 ArrayList 和 Vector 一般数组长度是不变的 * ArrayList:默认长度为10,以后使用 50%的增加,超过后,将原来的10个元素复制到 长度为15的数组中,然后再在后面添加新的元素(可变长度数组,就是不断new数组完成的) * Vector:默认长度为 10,超过后100%延长,这样就变成了20,比较浪费空间 * * * |--Set : 元素是无序,元素不可以重复,该集合中没有索引. * * List: * 特有方法: 凡是可以操作角标的方法都是该体系中特有的方法. * * 增 * add(index,element) * addAll(index,Collection); * 删 * remover(index); * 改 * set(index,element); * 查 * get(index) * subList(from,to); * listIterator(); * * list集合特有的迭代器 叫做 listIterator 是Iterator的子接口. * * 在迭代时,不可以通过集合对象的方法操作集合中的呀un苏.因为会发生ConcurrentModificationException * * 所以,在迭代时,只能使用迭代器的方法操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出,删除的操作. * 如果想要其他的操作如,添加 修改 等就需要使用 listIterator 子接口 * * 该接口只能通过list集合的listIterator 获取 * * * */ public class ListDemo { public static void sop(Object obj){ System.out.println(obj); } public static void main(String[] args) { method_1(); method_2(); } public static void method_2(){ //演示列表迭代器 ArrayList al=new ArrayList(); al.add("java01"); al.add("java02"); al.add("java03"); sop("原集合:"+al); //跌带动的时候 找到后想删除 发现 使用普通的 Iterator 不能做到 /*Iterator it=al.iterator(); while(it.hasNext()){ Object obj=it.next(); if(obj.equals("java02")){ //发现 有问题 .因为在使用it时候,同时对集合al进行了操作,这样就有可能出现安全问题 al.add("java08"); //it.remove(); //在使用 Iterator 的只能使用 Iterator的方法. } sop("obj="+obj); }*/ //正向遍历 ListIterator li=al.listIterator(); while(li.hasNext()){ Object obj=li.next(); if(obj.equals("java02")){ li.add("java007"); } } sop("obj="+al); //逆向遍历 while(li.hasPrevious()){ sop("previous:"+li.previous());//是否有前一个 } } public static void method_1(){ ArrayList al=new ArrayList(); al.add("java01"); al.add("java02"); al.add("java03"); sop("原集合:"+al); //在制定的位置添加元素 al.add(1,"java09"); sop("添加:"+al); //删除指定位置上的元素 al.remove(2); sop("删除:"+al); //修改元素 al.set(2, "java007"); sop("修改:"+al); //通过角标获取元素 sop("get(1):"+al.get(1)); //获取所有元素 for(int x=0;x<al.size();x++){ System.out.println("al("+x+")="+al.get(x)); } Iterator it=al.iterator(); while(it.hasNext()) it.next(); //通过indexOf获取对象的位置 sop("indexOf="+al.indexOf("java09")); List sub=al.subList(1, 2); sop("sub"+sub); } }
Collection的操作
/** *集合类 * 1.add方法 的参数类型是Object,以便于接受任意类型对象 * 2.集合中存储的都是对象的引用 (地址) * * 什么是迭代器呢 ? * 其实就是 集合的取出元素的方式. * * */ public class CollectionDemo { public static void main(String[] args) { base_method2(); method_get(); } //取出元素 public static void method_get(){ ArrayList al=new ArrayList(); al.add("java01"); al.add("java02"); al.add("java03"); al.add("java04"); al.add("java05"); /* * Iterator it=al.iterator(); //获取迭代器 用于取出集合中的元素 while(it.hasNext()) sop(it.next()); */ //这种有优势, 增加了 内存优化,使用完后 it就会被回收. for(Iterator it=al.iterator();it.hasNext();){ sop(it.next()); } } //取交集 批量删除 public static void base_method2(){ ArrayList al=new ArrayList(); al.add("java01"); al.add("java02"); al.add("java03"); al.add("java04"); al.add("java05"); ArrayList al2=new ArrayList(); al2.add("java01"); al2.add("java02"); al2.add("java05"); al2.add("java06"); //al.retainAll(al2); //取交集,al中只会保留和 al2中相同的元素 al.removeAll(al2);// 一次删除一堆元素 sop("al1"+al); sop("al2"+al2); } public static void base_method(){ //创建一个集合容器,使用Collection接口的子类.ArrayList ArrayList al=new ArrayList(); al.add("java01"); al.add("java02"); al.add("java03"); al.add("java04"); al.add("java05"); //1.获取集合的长度 sop("size:"+al.size()); //2.打印集合 sop("原集合:"+al); //3.删除元素 al.remove("java02"); sop("现集合:"+al); //判断元素 sop("java03是否存在:"+al.contains("java03")); sop("集合是否为空:"+al.isEmpty()); //清空集合 al.clear(); sop("现集合:"+al); } public static void sop(Object obj){ System.out.println(obj); } }
Vector
/** * 元老级 * Vector类中 带有Element的就是 Vector的特有方法 * * Enumeration 枚举 就是早起Vector特有的取出方式. * 发现 枚举和 迭代器很像 * * 其实枚举和 迭代器是一样的. * 因为枚举的名称以及方法的名称都过长,所以被迭代器取代了 枚举郁郁而终了 * */ public class VectorDemo { //Vector中 带有Element的就是 Vector的特有方法 public static void main(String[] args) { // TODO Auto-generated method stub Vector v=new Vector(); v.add("java01"); v.add("java02"); v.add("java03"); v.add("java04"); Enumeration en=v.elements(); while(en.hasMoreElements()){ System.out.println(en.nextElement()); } } }
ArrayList的使用
/** * 将自定义对象最为元素存储到ArrayList集合中,并除去重复元素 * 比如 :存人对象, 同姓名 同年龄,视为同一个人,为重复元素 * * 思路: * 1.对人描述,将数据封装进人对象 * 2.定义容器,将人存如 * 3.取出 * * List判断元素是否相同,依据的是元素的equals * */ class Person{ private String name; private int age; Person(String name,int age){ this.name=name; this.age=age; } public String getName(){ return name; } public int getAge(){ return age; } @Override public boolean equals(Object obj) { if(!(obj instanceof Person)) return false; Person p=(Person)obj; return this.getName().equals(p.getName()) && this.getAge()==p.age; } } public class ArrayListDemo { public static void main(String[] args) { ArrayList al=new ArrayList(); al.add(new Person("admin",12)); al.add(new Person("BBBBB",12)); al.add(new Person("CCCCC",12)); al.add(new Person("admin",12)); al=singleElement(al); Iterator it=al.iterator(); while(it.hasNext()){ //sop(it.next().getName()+"::"+it.next().getAge());//编译失败 父类引用指子类对象 Person p=(Person)it.next(); sop(p.getName()+":::"+p.getAge()); } sop("remove 03:"+al.remove(new Person("BBBBB",12))); sop(al); } public static void sop(Object obj){ System.out.println(obj); } public static ArrayList singleElement(ArrayList al){ //定一个容器 ArrayList newAl=new ArrayList(); Iterator it=al.iterator(); while(it.hasNext()){ Object obj=it.next(); if(!newAl.contains(obj)) //判断的是对象是否相同 newAl.add(obj); } return newAl; } }
ArrayList的练习
/** * 去除ArrayList中的重复元素 */ public class ArrayListTest { public static void sop(Object obj){ System.out.println(obj); } public static void main(String[] args) { ArrayList al=new ArrayList(); al.add("java01"); al.add("java01"); al.add("java02"); al.add("java01"); al.add("java02"); al.add("java03"); sop("原集合:"+al); sop(al=singleElement(al)); /*在迭代时循环中next调用一次,就要使用hasNext判断一次 Iterator it=al.iterator(); while(it.hasNext()){ System.out.println(it.next()+"..."+it.next()); } */ } public static ArrayList singleElement(ArrayList al){ //定一个容器 ArrayList newAl=new ArrayList(); Iterator it=al.iterator(); while(it.hasNext()){ Object obj=it.next(); if(!newAl.contains(obj)) newAl.add(obj); } return newAl; } }
发表评论
-
检测一个字符串是否在jvm的常量池中
2018-12-18 17:34 995public static boolean inPool( ... -
UTC时间, GMT时间 ,夏令时
2017-08-18 15:12 2280经常混淆于此,特地研究了一下,记录在此以备忘。 整个地 ... -
java 反射List
2017-02-18 01:58 5650package com.enhance.reflect; ... -
JDK1.5 Exchange 两个线程互换数据
2016-08-04 18:00 980import java.util.concurrent ... -
JDK1.5 CountDownLatch
2016-08-04 16:25 1054/* * 还有一个利用场景: ... -
java CyclicBarrier 循环障碍阻塞
2016-08-03 23:54 1005//一个同步辅助类,它允许一组线程互相等待,直到到达某个公 ... -
java 信号灯 Semaphore
2016-08-03 23:53 1822更多介绍http://blog.csdn.net/java20 ... -
java 使用读写锁设计一个缓存模型
2016-08-03 23:49 1416import java.util.HashMap; ... -
java 读写锁
2016-08-03 23:46 813import java.util.Random; i ... -
java 多个线程之间同步通信
2016-08-02 17:16 2396import java.util.concurrent ... -
jdk1.5 锁 Lock 和 Condition
2016-08-02 17:03 922// lock 练习 public class Lock ... -
JDK1.5 获取线程执行结果 Callable Future
2016-08-02 15:08 1171import java.util.Random; i ... -
JDK1.5 线程池
2016-08-02 14:48 800import java.util.concurrent ... -
java 多线程ThreadLocal
2016-08-02 00:13 1144import java.util.Random; ... -
java 定时器 Timer
2016-08-01 16:53 3890import java.util.Calendar; ... -
java 多线程同步+通信
2016-08-01 16:48 964/** *父子线程 交替打印10 次, 100次 ... -
java 线程同步
2016-08-01 16:43 1020import java.util.concurrent.l ... -
java多线程练习
2016-08-01 16:35 1838Java 传统多线程 Java 多线程同步 Java 多线 ... -
java 传统多线程
2016-08-01 16:34 1001/** * 传统多线程 */ public ... -
java 图片,剪切,缩放
2016-01-06 10:21 2228package out; import ja ...
相关推荐
《Vector、ArrayList、List使用深入剖析》-JAVA中文站(www_java-cn_com).htm
本资源是一个使用Java编写的漂亮时钟程序,包含了声音和背景图片的加载,程序运行后可以显示一个漂亮的时钟界面。下面是该程序的知识点总结: 一、Java Applet基础知识 * 使用Java.applet包中的Applet类来创建一个...
然而,一个常见的陷阱是,当我们对`vector`进行某些操作时,其迭代器可能会失效,这正是 "[C++][经验总结]vectory迭代器(iterator)失效" 这一主题的核心所在。理解这个问题对于编写稳定且高效的C++代码至关重要。 ...
vectory是用ES6编写JavaScript向量数学库。 安装 npm install vectory-lib 使用向量,一些例子 首先,您需要加载vectory。 请注意,vectory只是lib的名称,但JavaScript类称为Vector,模块称为vector。 let Vector ...
另一个常见的故障是WARN.10/ALARM10电机过热,这是由于电机长时间过载运行,导致电机内部温度过高,触发变频器内置的电子热保护装置。若故障是由于电机过载,用户应该检查电机的负载参数是否设置正确,并降低电机的...
向量这是一个管理项目,是Vue和ant-design-vue框架的基础。项目设置npm install编译和热重装以进行开发npm run serve编译并最小化生产npm run build运行测试npm run test整理和修复文件npm run lint自定义配置请参阅...
易语言是一种专为中国人设计的编程语言,它的目标是使编程变得简单、直观,让普通用户也能进行软件开发。在“易语言源码易语言求向量长度源码.rar”这个压缩包中,我们主要讨论的是如何使用易语言来计算向量的长度,...
基于单相H桥式逆变器拓扑,搭建了一种基于单相矢量控制的调制技术,供大家参考。