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的更多相关文章
随机推荐
- Miniconda 安装 & Pip module 安装 & Shell 脚本调用 Miniconda 虚拟环境手册(实战项目应用)
(实战项目应用) 1. 下载Miniconda 两个安装方式: 方式1:wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Min ...
- 基于虚拟机安装Linux并利用LVM创建磁盘分区
主要步骤:将磁盘设置为LVM类型,并在这四个分区上创建物理卷.卷组和逻辑卷,最后将逻辑卷挂载.电脑使用Windows10 企业版 LTSC 操作系统.虚拟机使用VMware15.5 pro . 1.安 ...
- GAMES101系列笔记一 图形学概述与线性代数入门
概述+线性代数 为什么学习图形学? Computer Graphics is AWESOME! 主要涉及内容: 光栅化 曲线和网格 光线追踪 动画与模拟 Differences between CG ...
- Sublime Text 3 安装插件与快捷键总结
ublime Text 3 是一个了不起的软件.首先,它是一个干净,实用,可以快速的编写代码编辑器.它不仅具有令人难以置信的内置功能(多行编辑和VIM模式),而且还支持插件,代码片段和其他许多东西.很 ...
- HTML 5 <input> multiple 属性
<form action="demo_form.asp" method="get"> Select images: <input type=& ...
- 12装饰器及*args,**kwargs
注:参数和返回值都是一个函数. 1,无参数 def decotare1(func): def wrapper(): print("First") func() return wra ...
- JS超酷时钟的制作
通过补充代码,实现时钟实时显示当前时间:年.月.日.时.分.秒.日期. <!DOCTYPE html> <html> <head lang="zh-CN&quo ...
- grep/字符/次数匹配/锚定符/小大括号/wc/tr/cut/sort/uniq
grep:正则表达式,文本过滤工具,能够实现以指定的"模式(Pattern)"逐行搜索文件中的内容,并将匹配到的行显示出来. 模式:是由正则表达式的元字符,其他字符组合起来的匹配字 ...
- Python博文_爬虫工程师是干什么的
程序员有时候很难和外行人讲明白自己的工作是什么,甚至有些时候,跟同行的人讲清楚"你是干什么的"也很困难.比如我自己,就对Daivd在搞的语义网一头雾水.所以我打算写一篇博客,讲一下 ...
- python之对元组的初步了解
元组: 元组与列表类似但是又有不同,主要的不同就是元组属于不可变序列,一旦创建,任何方法都不可以修改元素. 元组使用小括号( )表示,这与列表不一样,列表是用方括号表示[ ]. a=('a','b') ...