java47
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的更多相关文章
随机推荐
- mysql数据库——选择优化的数据类型
选择更小的数据类型:一般情况下,应该尽量使用可以正确存储数据的最小数据类型.更小的数据类型通常更快,它们占用更少的磁盘.内存和CPU缓存,并且处理时需要的CPU周期也更少.但是要确保没有低估需要存储的 ...
- 基于gin的golang web开发:模型验证
Gin除了模型绑定还提供了模型验证功能.你可以给字段指定特定的规则标签,如果一个字段用binding:"required"标签修饰,在绑定时该字段的值为空,那么将返回一个错误.开发 ...
- sync_with_stdio(false)的副作用
sync_with_stdio()的一个特性 水一篇随笔 其实对于用快读的大佬来说没什么用,但还是提一下 ios::sync_with_stdio(false)用处是"关闭同步", ...
- 浅谈 Tarjan 算法
目录 简述 作用 Tarjan 算法 原理 出场人物 图示 代码实现 例题 例题一 例题二 例题三 例题四 例题五 总结 简述 对于初学 Tarjan 的你来说,肯定和我一开始学 Tarjan 一样无 ...
- 什么是SPI
一.什么是SPI SPI ,全称为 Service Provider Interface,是一种服务发现机制.它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加 ...
- K8S Canal基于Prometheus进行实时指标监控
文章来源于本人的印象笔记,如出现格式问题可访问该链接查看原文 部署canal的prometheus监控到k8s中 1.grafana的docker部署方式:https://grafana.com/gr ...
- 力扣 - 445. 两数相加 II
目录 题目 思路 代码实现 题目 给你两个 非空 链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储一位数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两 ...
- phpstorm XDebug 调试
最近要实现php功能,要提供个接口提供访问,但是我就是个菜鸡,网上找了一堆,所以来提供踩坑心得了 参考文档: https://blog.csdn.net/yinhangbbbbb/article/de ...
- 对比JAVA、Python、C、Go运行时间,我惊呆了!!!
对比JAVA.Python.C.Go运行时间,我惊呆了!!! 周末在寝室刷完算法,想放松一下,于是做了一个实验:用现在主流的几种编程语言对0 - (10000000 - 1)求和,结果我惊呆了,话不多 ...
- c#集合随机数
List<int> list = new List<int>(10); Random r=new Random(); int num = 0; for (int i = 0; ...