1.

1.List集合根据角标获取元素

import java.util.ArrayList;
import java.util.List; public class List集合 {
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void main(String[] args) {
List list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
System.out.println(list);
//在集合中插入数据
list.add(1,"WW");
System.out.println(list);//index<=数据长度
//获取指定角标的元素
System.out.println(list.get(2));
//遍历list集合
System.out.println("---------------------");
for(int i=0;i<list.size();i++) {
System.out.println(list.get(i));
}
}
}

[a, b, c]
[a, WW, b, c]
b
---------------------
a
WW
b
c

· List集合删除元素并发异常



不可直接改变集合的结构

在ArrayList中每次调用next时(输出下一个元素),都会判断modCount != expectedModCount

如果不相等则会抛出异常

modCount :集合修改次数

expectedModCount :迭代器中记录的集合修改的次数



而调用it.remove();它则会让modCount = expectedModCount

若想添加元素,不能借助迭代器

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator; public class 并发异常 {
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void main(String[] args) {
·List集合删除元素并发异常
List list = new ArrayList();
list.add("1");
list.add("2");
list.add("3");
//删除集合中的数字2
Iterator it =list.iterator();
//1.确定是否还有元素
while (it.hasNext()) {
//2.取出元素
String str = (String)it.next();
//3.找到元素2
if(str.equals("2")) {
//4.删除元素2
//list.remove("2");
it.remove();
}
}
System.out.println(list);
【[1, 3]】
·List集合添加元素并发异常
ListIterator it2 = list.listIterator();
while(it2.hasNext()) {
String str2 = (String)it2.next();
if(str2.equals("1")) {//在此元素之后添加数据
it2.add("456");
}
}
System.out.println(list);
}
}
【[1, 456, 3]】
· ListIterator的向前遍历集合方法
while(it2.hasPrevious()) {
System.out.print("preindex = "+ it2.previousIndex());
System.out.println(",元素为" + it2.previous());
}
【preindex = 2,元素为3
preindex = 1,元素为456
preindex = 0,元素为1

ArrayList数据结构分析

查找比较快

添加删除比较慢



去除一个集合中的重复元素

import java.util.ArrayList;
import java.util.ListIterator; public class 去除重复元素 {
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void main(String[] args) {
ArrayList al = new ArrayList();
al.add("a");
al.add("a");
al.add("b");
al.add("b");
al.add("c");
al.add("e");
//创建一个空的集合
ArrayList al2 = new ArrayList();
//取出每一个元素(遍历)
ListIterator it = al.listIterator();
while(it.hasNext()) {
//每取出一个元素,要判断新集合中是否有相同元素
Object obj = it.next();
//如果没有重复,则放入新集合
if(!al2.contains(obj)) {
al2.add(obj);
}
}
System.out.println(al2);
}
}
【[a, b, c, e]】

可以将此写成一个工具类

import java.util.ArrayList;
import java.util.ListIterator; public class 去除重复元素 {
static ArrayList getSingle(ArrayList al) {
//创建一个空的集合
ArrayList al2 = new ArrayList();
//取出每一个元素(遍历)
ListIterator it = al.listIterator();
while(it.hasNext()) {
//没取出一个元素,要判断新集合中是否有相同元素
Object obj = it.next();
//如果没有重复,则放入新集合
if(!al2.contains(obj)) {
al2.add(obj);
}
}
//System.out.println(al2);
return al2;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void main(String[] args) {
ArrayList al = new ArrayList();
al.add("a");
al.add("a");
al.add("b");
al.add("b");
al.add("c");
al.add("e");
ArrayList list = getSingle(al);
System.out.println(list);
ArrayList al2 = new ArrayList();
al2.add("a");
al2.add("a");
al2.add("c");
al2.add("c");
al2.add("e");
ArrayList list2 = getSingle(al2);
System.out.println(list2);
}
}
【[a, b, c, e]
[a, c, e]】

java47的更多相关文章

随机推荐

  1. Java如何正确比较浮点数

    看下面这段代码,将 d1 和 d2 两个浮点数进行比较,输出的结果会是什么? double d1 = .1 * 3; double d2 = .3; System.out.println(d1 == ...

  2. Angular2 初学小记

    1.与Angular1的异同 几乎完全不同(什么鬼~ 1)保留一些特性 表达式仍旧用{{}}. 2)属性指令变为驼峰式 ng-if ---> ngIf 3)ng-repeat被ngFor代替 4 ...

  3. 7、Django之模型层第二篇:多表操作

    一 表关系回顾 在讲解MySQL时,我们提到,把应用程序的所有数据都放在一张表里是极不合理的. 比如我们开发一个员工管理系统,在数据库里只创建一张员工信息表,该表有四个字段:工号.姓名.部门名.部门职 ...

  4. SpringBoot入门最简单的一个项目示例

    使用IDEA创建一个SpringBoot项目 1.1 打开IDEA,文件-New-Project 1.2下一步,选择版本8(根据自己安装的JDK版本来选择) 1.3 下一步后点击Web,勾选Sprin ...

  5. Spider--补充--Re模块_1

    # @ Author : Collin_PXY # 正则表达式: import re # 1,分步写法: # 1)rule.search(string) pattern='各小区' rule=re.c ...

  6. slideUp和slideDown的区别

    slideUp():通过使用滑动效果,隐藏被选元素,如果元素已显示出来的话.语法:$(selector).slideUp(speed,callback).speed:可选,表示动画运行的时候.call ...

  7. ceph unfound objects 处理

    ceph Vol 45 Issue 1 1.unfound objects blocking cluster, need help! Hi, I have a production cluster o ...

  8. Java web项目JXl导出excel,(从eclipse上移动到tomact服务器上,之路径更改)

    我用的是jxl导出excel,比较简单,最开始我是固定路径不能选择,很局限,后来改了,而且固定路径当把项目放在服务器上时,路径不可行. 在网上各位大神的帮助成功设置响应头,并且可选保存路径. 1.前端 ...

  9. 网站实现微信扫码登录 php

    微信开放平台账号一个,必须是商户,不然你也开不了 1.在开放平台创建应用,并设置回调地址(域名即可) 2.生成二维码,前端代码,用户扫码后会给你的回调地址发送code <span id=&quo ...

  10. python多线程——如何停止一个死循环的线程

    进程想要执行任务就需要依赖线程.换句话说,就是进程中的最小执行单位就是线程,并且一个进程中至少有一个线程. 那什么是多线程?提到多线程这里要说两个概念,就是串行和并行,搞清楚这个,我们才能更好地理解多 ...