List:
import java.awt.List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
public class ListFunction {
public static void main(String[] args) {
//List list=new ArrayList(); 报错
//ArrayList list=new ArrayList(); 警告
ArrayList<String> list=new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
// 使用list中添加方法 add(int index, Object obj)
// 添加的角标就是后面元素所在的位置 不能越界
list.add(3,"x");
System.out.println(list);
// 通过角标获取对应的元素
Object object=list.get(1);
System.out.println(object);
// 通过get 方法 进行遍历
for(int i=0;i<list.size();i++) {
Object object2=list.get(i);
System.out.println(object2);
}
// set 方法 不要越界
list.set(0, "z");
System.out.println(list);
// 根据角标删除 返回的是被删除的元素
Object remove=list.remove(3);
System.out.println(remove);
System.out.println(list);
//删除时应该注意
ArrayList list1=new ArrayList();
list1.add(111);
list1.add(222);
list1.add(333);
// 删除 111 元素
//list1.remove(0);
// 删除时 系统没自动装箱 就按数字传入的方法
// 调用的是 按角标删除的方法调用 所以越界
//list1.remove(111);
// 如果非要使用按元素删除 需要手动装箱
list1.remove(Integer.valueOf(111));
System.out.println(list1);
/*
* 需求:
* 集合中添加 a b c d
* 遍历集合 如果有b 就添加一个 "oh~yes"
*/
ArrayList<String> list2=new ArrayList<String>();
list2.add("a");
list2.add("b");
list2.add("c");
list2.add("d");
/*
//这段代码没有问题
for(int i=0;i<list2.size();i++) {
Object objectstr=list2.get(i);
if(objectstr.equals("b")) {
list2.add("oh~yes");
}
}
*/
//这段代码报错了
// 如果使用迭代器遍历 那么 长度必须是固定的 4不能变
/*
Iterator iterator=list2.iterator();
while(iterator.hasNext()) {
if(iterator.next().equals("b")) {
// ConcurrentModificationException 发生并发修改异常
// 注意:在迭代器遍历的时候 不要直接使用集合做操作
list2.add("oh~yes"); //相当于修改了集合长度
}
}*/
//这段代码没有问题
// 取出list特有的迭代器
ListIterator listIterator=list2.listIterator();
while(listIterator.hasNext()) {
if(listIterator.next().equals("b")) {
// 让迭代器 向集合中 添加元素
//注意: 在迭代器中进行对集合的添加或删除 要使用迭代器中的方法,不能直接使用集合去操作
listIterator.add("oh~yes");
}
}
System.out.println(list2);
/***逆向****/
ListIterator listIterator1=list2.listIterator();
//正向
while(listIterator1.hasNext()) {
System.out.println(listIterator1.next());
}
//hashPrevious判断有没有前一个元素
while(listIterator1.hasPrevious()) {
System.out.println(listIterator1.previous());
}
}
}
运行结果:
b
a
b
c
x
d
[z, b, c, x, d]
x
[z, b, c, d]
[222, 333]
[a, b, oh~yes, c, d]
a
b
oh~yes
c
d
d
c
oh~yes
b
a
Vector:
import java.util.Enumeration;
import java.util.Vector;
public class Vectorexample {
public static void main(String[] args) {
// 创建一个Vector集合
Vector vector=new Vector();
vector.addElement("a");
vector.addElement("b");
vector.addElement("c");
vector.addElement("d");
System.out.println(vector);
// 迭代器遍历
// 获取Vector 中的迭代器
Enumeration elements=vector.elements();
while(elements.hasMoreElements()) {
// 输出元素
System.out.println(elements.nextElement());
}
}
运行结果:
[a, b, c, d]
a
b
c
d
LinkedList:(有单向和双向之分,下面代码写的是双向)
import java.util.LinkedList;
public class LinkedListexample {
public static void main(String[] args) {
LinkedList linkedList=new LinkedList();
linkedList.addFirst("a");
linkedList.addFirst("b");
linkedList.addFirst("c");
linkedList.addFirst("d");
linkedList.addLast("a");
linkedList.addLast("b");
linkedList.addLast("c");
linkedList.addLast("d");
linkedList.addLast("e");
System.out.println(linkedList);
System.out.println(linkedList.getFirst());
System.out.println(linkedList.getLast());
}
}
运行结果:
[d, c, b, a, a, b, c, d, e]
d
e
单链表和双链表的区别:
单链表:
又链表:
Set:
HashSet\LinkedHashSet\TreeSet
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Scanner;
import java.util.TreeSet;
public class Setexample {
public static void main(String[] args) {
HashSet<String> set=new HashSet<>();
boolean add=set.add("d");
boolean add2=set.add("d");
set.add("a");
set.add("a");
set.add("b");
set.add("c");
System.out.println(add);
System.out.println(add2);
System.out.println(set);
//使用HashSet主要用来去重
//LinkedHshSet
LinkedHashSet<String> set1=new LinkedHashSet<>();
set1.add("l");
set1.add("w");
set1.add("w");
set1.add("a");
set1.add("n");
set1.add("g");
System.out.println(set1);
//输入一个字符串,去掉其中重复字符
Scanner scanner=new Scanner(System.in);
String string=scanner.nextLine();
LinkedHashSet<Character> set2=new LinkedHashSet<>();
char[] charArray=string.toCharArray();
for(int i=0;i<charArray.length;i++) {
set2.add(charArray[i]);
}
System.out.println("set2"+"="+set2);
ArrayList<String> arrayList=new ArrayList<>();
arrayList.add("a");
arrayList.add("a");
arrayList.add("b");
arrayList.add("b");
arrayList.add("c");
arrayList.add("c");
System.out.println("arrayList"+"="+arrayList);
LinkedHashSet<String> lhs=new LinkedHashSet<>();
lhs.addAll(arrayList);
System.out.println("lhs"+"="+lhs);
arrayList.clear();
arrayList.addAll(lhs);
System.out.println("arrayList"+"="+arrayList);
//TreeSet
//TreeSet(内部实现二叉树)
//特点:无序 不重复
//主要作用:排序
TreeSet<Integer> treeSet=new TreeSet<>();
treeSet.add(1);
treeSet.add(13);
treeSet.add(1);
treeSet.add(3);
treeSet.add(2);
for(Integer integer:treeSet) {
System.out.println(integer);
}
}
}
运行结果:
true
false
[a, b, c, d]
[l, w, a, n, g]
sfyrjdgdffdaewff 这一行字符串是从键盘输入的
set2=[s, f, y, r, j, d, g, a, e, w]
arrayList=[a, a, b, b, c, c]
lhs=[a, b, c]
arrayList=[a, b, c]
1
2
3
13