Collection集合的继承体系
ArrayList去除集合中的重复元素
案例:
import java.util.*;
public class CollectionTest {
public static void main(String[] args) {
List list = new ArrayList();
list.add(100);
list.add(100);
list.add(200);
list.add(100);
list.add(400);
list.add(500);
list.add(100);
list.add(300);
list.add(100);
list.add(500);
list.add(200);
list.add(100);
list.add(100);
list.add(100);
list.add(200);
list.add(100);
list.add(400);
list.add(500);
list.add(100);
list.add(300);
list.add(100);
list.add(500);
list.add(200);
list.add(100);
list.add(1);
list.add(1);
list.add(2);
list.add(2);
list.add(1);
list.add(1);
list.add(1);
list.add(1);
list.add(123);
list.add(100);
list.add(100);
list.add(200);
list.add(100);
list.add(400);
list.add(500);
list.add(100);
list.add(300);
list.add(100);
list.add(500);
list.add(200);
list.add(100);
/*for (int i = 0; i < list.size() - 1; i++) {
for (int j = i + 1;j < list.size();j++){
Integer a = (Integer)list.get(j);
Integer b = (Integer)list.get(i);
if (a.equals(b)){
list.remove(a);
j--;
}
System.out.println(list);
}
}*/
for (int j = list.size() - 1;j >= 0;j--){
for (int i = j - 1;i >= 0;i--){
if (list.get(j).equals(list.get(i)) && i != j){
list.remove(i);
j = list.size() - 1;
i++;
}
}
// System.out.println(list);
}
System.out.println(list);
}
}
案例二:
package javaSEreview20190716;
import java.util.ArrayList;
import java.util.List;
/**
* @Description:去除集合中的重复元素,用选择排序做出来
* @Author:@李小白
* @Date:2019/7/16 23:26
*/
public class Demo01 {
public static void main(String[] args) {
List list = new ArrayList();
list.add(100);
list.add(200);
list.add(100);
list.add(400);
list.add(500);
list.add(100);
list.add(300);
list.add(500);
for (int i = 0; i < list.size(); i++) {
for (int j =i+1; j < list.size(); j++) {
if (list.get(i).equals(list.get(j))){
list.remove(j);
j--;
}
}
}
System.out.println(list);
}
}
案例三:
import java.util.ArrayList;
public class MyTest3 {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(100);
list.add(100);
list.add(100);
list.add(100);
list.add(100);
list.add(100);
list.add(100);
list.add(100);
list.add(200);
list.add(100);
list.add(400);
list.add(500);
list.add(100);
list.add(300);
list.add(100);
list.add(100);
list.add(200);
list.add(100);
list.add(400);
list.add(500);
list.add(100);
list.add(300);
list.add(100);
list.add(500);
list.add(200);
list.add(100);
list.add(400);
list.add(500);
list.add(100);
list.add(300);
//递归删除
ArrayList list2 = deleteEle(list);
System.out.println(list);
System.out.println(list2);
System.out.println(list == list2);
}
private static ArrayList deleteEle(ArrayList<Integer> list) {
for (int i = 0; i < list.size(); i++) {
Integer ele = list.get(i);
if (list.indexOf(ele) != list.lastIndexOf(ele)) {
list.remove(ele);
return deleteEle(list);
}
}
return list;
}
}
LinkedList的特有功能
A:LinkedList类概述: List 接口的链接列表实现 , 此实现不是同步的
B:LinkedList类特有功能
public void addFirst(E e)及addLast(E e)
public E getFirst()及getLast()
public E removeFirst()及public E removeLast()
案例一:
import java.util.LinkedList;
public class MyTest {
public static void main(String[] args) {
// LinkedList 底层数据结构是链表,查询慢,增删快,线程不安装效率高
LinkedList linkedList = new LinkedList();
linkedList.add(100);
// linkedList.addLast(1000);
linkedList.add(200);
linkedList.push(90000);
linkedList.addFirst(10);
System.out.println(linkedList);
//Object peek = linkedList.peek();
//System.out.println(peek);
//Object poll = linkedList.poll();
//System.out.println(poll);
//System.out.println(linkedList);
//void addFirst (E e)
//将指定元素插入此列表的开头。
//void addLast (E e)
//将指定元素添加到此列表的结尾。
//
//E getFirst ()
//返回此列表的第一个元素。
//E getLast ()
//返回此列表的最后一个元素。
//
//int indexOf (Object o)
//返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 - 1。
//int lastIndexOf (Object o)
//返回此列表中最后出现的指定元素的索引,如果此列表中不包含该元素,则返回 - 1。
//
//
//E peek ()
//获取但不移除此列表的头(第一个元素)。
//E peekFirst ()
//获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。
//E peekLast ()
//获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。
//
//
//E pop ()
//从此列表所表示的堆栈处弹出一个元素。
//void push (E e)
//将元素推入此列表所表示的堆栈。
//
//E removeFirst ()
//移除并返回此列表的第一个元素。
//
//E removeLast ()
//移除并返回此列表的最后一个元素。
}
}
用LinkedList模拟栈数据结构的集合
栈的数据结构特点:先进后出
案例:
package day20190718.study01;
import java.util.LinkedList;
/**
* @description: 模拟栈数据的集合,先进后出,用linkenList
* @author: @李小白
* @create: 2019-07-18 10:15
*/
public class Demo04 {
public static void main(String[] args) {
ListDemo4 ms = new ListDemo4();
ms.addEle("100");
ms.addEle("200");
ms.addEle("300");;
ms.addEle("400");
ms.addEle("500");
Object o = ms.get();
System.out.println(o);
Object o1 = ms.get();
System.out.println(o1);
Object o2 = ms.get();
System.out.println(o2);
Object o3 = ms.get();
System.out.println(o3);
Object o4 = ms.get();
System.out.println(o4);
}
}
package day20190718.study01;
import java.util.LinkedList;
/**
* @description:
* @author: @李小白
* @create: 2019-07-18 10:49
*/
public class ListDemo4 {
LinkedList linkedList=null;
public ListDemo4() {//无参数构造
linkedList = new LinkedList();
}
public void addEle(String s) {
linkedList.addFirst(s);//一个一个相加方法到第一个
}
public Object get() {
Object pop = linkedList.pop();//然后在吧第一个删除
linkedList.addLast(pop);//把删除出来的放到最后一个,最后再输出较好了
return pop;
}
}
结果:
500
400
300
200
100
500
Vector的特有功能
A:Vector类概述: Vector 类可以实现可增长的对象数组 , Vector 是同步的。
B:Vector类特有功能
public void addElement(E obj)
public E elementAt(int index)
public Enumeration elements()
案例一:
import com.sun.media.sound.SoftTuning;
import javax.swing.*;
import java.util.Enumeration;
import java.util.Vector;
public class MyTest {
public static void main(String[] args) {
//E elementAt ( int index)
//返回指定索引处的组件。
//Enumeration<E> elements ()
//返回此向量的组件的枚举。
//void insertElementAt (E obj,int index)
//将指定对象作为此向量中的组件插入到指定的 index 处。
//
//E lastElement ()
//返回此向量的最后一个组件。
//E firstElement ()
//返回此向量的第一个组件(位于索引 0)处的项)。
Vector vector = new Vector();
//void addElement (E obj)
//将指定的组件添加到此向量的末尾,将其大小增加 1。
vector.addElement(2000);
vector.addElement(100);
vector.addElement(300);
vector.add(100);
vector.add(100);
vector.add(100);
vector.add(100);
System.out.println(vector);
vector 特有的迭代方式 elements()获取一个迭代器
//Enumeration elements = vector.elements();
//while (elements.hasMoreElements()){
// Object o = elements.nextElement();
// System.out.println(o);
//}
Object o = vector.elementAt(0);
System.out.println(o);
vector.insertElementAt(50, 1); //在指定索引处插入元素
System.out.println(vector);
}
}
ArrayList去除集合中字符串的重复值(字符串的内容相同)
案例:
//A:
//案例演示
//需求:ArrayList去除集合中字符串的重复值(字符串的内容相同)
//思路:创建新集合方式
import java.util.ArrayList;
public class MyTest {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("abc");
list.add("bbb");
list.add("abc");
list.add("abc");
list.add("ccc");
list.add("ddd");
list.add("ccc");
list.add("ddd");
ArrayList newList = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
String s = (String) list.get(i);
if(!newList.contains(s)){
newList.add(s);
}
}
System.out.println(newList);
}
}
排序集合中的元素
ctrl+Q ctrl+P 可以提示方法中要的参数类型
案例:
import java.util.ArrayList;
import java.util.Comparator;
public class MyTest3 {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(200);
list.add(400);
list.add(500);
list.add(600);
list.add(100);
list.add(20);
//排序集合中的元素
//ctrl+Q ctrl+P 可以提示方法中要的参数类型
list.sort(new Comparator<Integer>() {
@Override
public int compare(Integer a, Integer b) {
return (a-b); //正 负 0
}
});
System.out.println(list);
}
}