一:List
1:ArrayList 继承于 list 是有序可重复集合的子实现类
ArrayList有两种遍历方式,for方法和迭代器
public static void main(String[] args) { ArrayList<String> arr = new ArrayList<>(); arr.add("hello"); arr.add("java"); arr.add("world"); arr.add("array"); Iterator it = arr.iterator(); while (it.hasNext()) { // 迭代器遍历 String str = (String) it.next(); System.out.println(str); } System.out.println("------------"); for (int x = 0; x < arr.size(); x++) { //for循环遍历 String str1 = (String) arr.get(x); System.out.println(str1); } }
2.Vector也是继承于 List
Vector 和 ArrayList 的区别:
快速随机访问,使用ArrayList,线程不安全,不同步
如果涉及到堆,栈,队列等操作,考虑用Vector,线程安全,同步
public static void main(String[] args) { Vector v=new Vector(); v.add("hello"); v.add("java"); v.add("world"); Enumeration ele = v.elements(); //理解为Vector中的迭代器 while(ele.hasMoreElements()) { String s=(String) ele.nextElement(); System.out.println(s); } }
3. LinkedList也是继承于List的
/** * 特有功能: * 添加功能 * addFirst(Object e):将指定的元素插入到列表的开头 * addLast(object e):将指定的元素添加到列表末尾 * 获取功能: * getFirst():获取列表第一个元素 * getLast():获取列表第二个元素 * * 删除功能 * public Object removeFirst()移除并返回此列表的第一个元素。 * public Object removeLast() * */ public class LinkedListExercise1 { public static void main(String[] args) { //模拟先进后出 LinkedList<String> list=new LinkedList<>(); list.addFirst("123"); list.addFirst("456"); list.addFirst("789"); Iterator it = list.iterator(); while(it.hasNext()) { String in=(String)it.next(); System.out.println(in); } }
4.List中删减重复元素和重复对象的方法(不使用set中的集合)
a.删除重复元素
public static void main(String[] args) { ArrayList<Object> oldList = new ArrayList<Object>(); oldList.add("a"); oldList.add("b"); oldList.add("b"); oldList.add("c"); oldList.add("d"); oldList.add("e"); oldList.add("f"); oldList.add("a"); oldList.add("d"); oldList.add("e"); ArrayList<Object> newList = new ArrayList<>(); Iterator<Object> it = oldList.iterator(); while (it.hasNext()) { String str = (String) it.next(); //迭代器遍历元素且给str if (!newList.contains(str)) { //判断新集合中是否含有该元素 newList.add(str); //如果有,将元素添加在新集合中 } } Iterator<Object> it1 = newList.iterator(); while (it1.hasNext()) { String str = (String) it1.next(); System.out.println(str); } }
//集合删除重复对象 public class ArrayListDemo3 { public static void main(String[] args) { ArrayList<student> List = new ArrayList<>(); student s1 = new student("张三", 18); student s2 = new student("张三", 18); student s3 = new student("李四", 16); student s4 = new student("王二麻子", 14); student s5 = new student("王二麻子", 14); List.add(s1); List.add(s2); List.add(s3); List.add(s4); List.add(s5); ArrayList<student> List2 = new ArrayList<>(); Iterator<student> it = List.iterator(); while (it.hasNext()) { student s = (student) it.next(); //在if判断语句中,要在student中重写equals()方法, //因为contains()的底层原码是用equals()来做对比的 //所以重写后才能实现对比,不然比较的是地址值,且全都不相等,则全输出 if (!List2.contains(s)) { List2.add(s); } } Iterator<student> it2 = List2.iterator(); while (it2.hasNext()) { student ss =(student) it2.next(); System.out.println(ss.getName()+ss.getAge()); } }
b.删除重复对象