List集合和Set集合的初步学习

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);
	}

}


2、TreeSet

<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;
	}

	

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值