1、List集合
1、ArrayList
public class ArrayListDemo01 {
public static void demo01() {
ArrayList al = new ArrayList();<span style="color:#33cc00;">//创建一个arrayList集合</span>
al.add("加油");<span style="color:#33cc00;">//添加数据</span>
al.add("嘿嘿");
al.add("好好");
sop(al);
al.remove(0);<span style="color:#33cc00;">// 删除下标</span>
sop(al);
al.remove("加油");<span style="color:#33cc00;">// 删除指定名称</span>
<span style="color:#33cc00;">//al.removeAll();删除一堆元素</span>
sop(al);
<span style="color:#33cc00;">// al.clear();//删除全部</span>
sop("集合是否存在嘿嘿:" + al.contains("嘿嘿"));<span style="color:#33cc00;">// 判断及和是否有指定元素</span>
sop("集合是否为空" + al.isEmpty());<span style="color:#33cc00;">// 判断集合是否为空</span>
}
public static void demo02(){
ArrayList al = new ArrayList();
al.add("加油");
al.add("嘿嘿");
ArrayList a2 = new ArrayList();
a2.add("加油");
a2.add("嘿嘿");
a2.add("好好");
al.retainAll(a2);<span style="color:#33cc00;">//连个集合取交集</span>
sop(al);
}
public static void main(String[] args) {
// demo01();
demo02();
}
public static void sop(Object obj) {
System.out.println(obj);
}
}
import java.util.ArrayList;
import java.util.Iterator;
<span style="color:#33cc00;">/*
*
* Iterator(迭代器),循环取出集合元素
* */
</span>
public class ArrayListDemo02 {
public static void demo01(){
ArrayList al = new ArrayList();
al.add("加油");
al.add("嘿嘿");
al.add("好好");
Iterator it = al.iterator();<span style="color:#33cc00;">//通过 <span style="font-family: Arial, Helvetica, sans-serif;">iterator()可以获得iterator对象</span></span>
while (it.hasNext()) {<span style="color:#33cc00;">//判断是否还有下一个元素</span>
sop(it.next());<span style="color:#33cc00;">//取下一个元素</span>
}
}
public static void main(String[] args) {
demo01();
}
public static void sop(Object obj) {
System.out.println(obj);
}
}
2、LinkedList
import java.util.LinkedList;
public class LinkedListDemo01 {
public static void demo() {
LinkedList ld = new LinkedList();
ld.addFirst("1");<span style="color:#33cc00;">// 添加到最头</span>
ld.addFirst("2");
ld.addLast("3");<span style="color:#33cc00;">// 添加到最尾</span>
ld.add("4");
sop(ld);
sop("------------------------------------------------");
sop(ld.getFirst());<span style="color:#33cc00;">//获取的第一个</span>
sop(ld.getLast());<span style="color:#33cc00;">//获取最后一个</span>
sop("------------------------------------------------");
ld.removeFirst();<span style="color:#33cc00;">// 删除第一个</span>
sop(ld);
ld.removeLast();<span style="color:#33cc00;">// 删除最后一个</span>
sop(ld);
}
public static void demo2(){
LinkedList ld = new LinkedList();
ld.offerFirst("1");<span style="color:#33cc00;">//添加到最前面</span>
ld.offerFirst("2");
ld.offerLast("3");<span style="color:#33cc00;">//添加到最后面</span>
ld.offerLast("4");
sop(ld);
sop("---------------------------------");
sop(ld.peekFirst());<span style="color:#33cc00;">//获取第一个</span>
sop(ld.peekLast())<span style="color:#33cc00;">;//获取最后一个</span>
sop("---------------------------------");
ld.pollFirst();<span style="color:#33cc00;">//删除第一个</span>
ld.pollLast();<span style="color:#33cc00;">//删除最后一个</span>
sop(ld);
}
public static void main(String[] args) {
//demo();
demo2();
}
public static void sop(Object obj) {
System.out.println(obj);
}
}
LinkendList练习
import java.util.LinkedList;
<span style="color:#33cc00;">/*
* 练习:用LinkedList模仿数据结构堆栈和队列
*
* 堆栈:先进后出(杯子)
* 队列:先进先出(水管)
*
* */
</span>
class DuiLie {
private LinkedList ld;
DuiLie() {
ld = new LinkedList();
}
public void myAdd(Object obj) {
ld.addLast(obj);
}
public Object myGet() {
return ld.pollFirst();<span style="color:#33cc00;">//先进先出</span>
<span style="color:#33cc00;">//return ld.pollLast();先进后出</span>
}
public boolean isElement() {
return ld.isEmpty();
}
}
public class LinkedListDemo02 {
public static void main(String[] args) {
DuiLie d = new DuiLie();
d.myAdd("hh01");
d.myAdd("嘿嘿02");
d.myAdd("哈哈03");
while (!d.isElement()) {
System.out.println(d.myGet());
}
}
}
2、Set集合
1、HashSet
<span style="color:#33cc00;">/*
* set集合:可以保证元素的唯一性; 储存结构为哈希表结构
*
* 为了保证元素的唯一性:对象需要复写HashCode()和equals()方法
*
* */</span>
class Student {
String name;
int age;
Student(String name, int age) {
this.name = name;
this.age = age;
}
<span style="color:#33cc00;">//覆盖hashCode()和equals()方法</span>
@Override
public int hashCode() {
return name.hashCode() + age * 16;
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Student)) {<span style="color:#33cc00;">//判读是不是Student对象</span>
return false;
}
Student s = (Student) obj;
return this.name.equals(s.name) && this.age == s.age;
}
}
public class HashSetDemo01 {
public static void demo01() {
HashSet hs = new HashSet();
hs.add(new Student("任浩", 20));
hs.add(new Student("立式", 18));
hs.add(new Student("张三", 15));
hs.add(new Student("张三", 15));
Iterator it = hs.iterator();
while (it.hasNext()) {
Student s = (Student) it.next();
sop(s.name + "----------------" + s.age);
}
}
public static void main(String[] args) {
demo01();
}
public static void sop(Object obj) {
System.out.println(obj);
}
}
<span style="color:#33cc00;">/**
* TreeSet 可以对Set集合进行排序
* 方法一:让对象自身具有比较性
* 步骤:实现comparable接口,复写compareto方法
*/
</span>
public class TreeSetDemo01 {
public static void main(String[] args) {
TreeSet t = new TreeSet();
t.add(new Workers("abc", 18));
t.add(new Workers("bac", 16));
t.add(new Workers("bac", 15));
t.add(new Workers("bbc", 15));
t.add(new Workers("bbc", 15));
t.add(new Workers("abc", 17));
Iterator i = t.iterator();
while (i.hasNext()) {
Workers w = (Workers) i.next();
System.out.println(w.getName() + "------------------" + w.getAge());
}
}
}
class Workers implements Comparable {<span style="color:#33cc00;">//实现Comparable接口</span>
private String name;
private int age;
Workers(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public int compareTo(Object o) {<span style="color:#33cc00;">//复写compareTo方法</span>
if (!(o instanceof Workers)) {
throw new RuntimeException("对象有误");
}
Workers w = (Workers) o;
if (this.age > w.age) {
return 1;
} else if (this.age == w.age) {
return this.name.compareTo(w.name);
}
<span style="color:#33cc00;">/*
* if (this.age == w.age) { return this.name.compareTo(w.name);
*
* }
*/
</span>
return -1;
}
}
/**
<span style="color:#33cc00;"> * 方法二:让集合自身具有比较性
* 步骤: 定义一个类,实现util包下的Comparator接口
* 复写compare方法
*
*/</span>
<span style="color:#33cc00;">//定义一个比较器</span>
class Comp implements Comparator{
public int compare(Object o1, Object o2) {
Worker w1=(Worker) o1;
Worker w2=(Worker) o2;
int a=w1.getAge()-w2.getAge();
if (a==0) {
return w1.getName().compareTo(w2.getName());
}
return a;
}
}
public class TreeSetDemo02 {
public static void main(String[] args) {
TreeSet t=new TreeSet(new Comp() );<span style="color:#33cc00;">//将比较器添加到集合</span>
t.add(new Worker("abc", 18));
t.add(new Worker("bac", 19));
t.add(new Worker("bc", 18));
t.add(new Worker("abc", 18));
t.add(new Worker("bbc", 18));
Iterator i = t.iterator();
while (i.hasNext()) {
Worker w = (Worker) i.next();
System.out.println(w.getName() + "------------------" + w.getAge());
}
}
}
class Worker {
private String name;
private int age;
Worker(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}