一: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.删除重复对象