zoukankan      html  css  js  c++  java
  • 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]】
    
  • 相关阅读:
    大整数相加算法
    java中String和char的区别
    Git命令
    Dart随记
    用nodejs或者Chrome控制台的js对URI进行编码或解码
    Rust执行cmd或shell命令
    cargo expand用于查看被宏隐藏的代码
    Blocking waiting for file lock on package cache
    Rust生命周期之个人理解
    Rust为基础类型实现Trait
  • 原文地址:https://www.cnblogs.com/-zero/p/11379296.html
Copyright © 2011-2022 走看看