List Set Map接口知识点归纳

接口 List

1.实现类ArrayList数组   LinkedList连表
2.顺序与加入顺序相同
3.手动排序: 前提list中元素类必须是实现了Comparable接口,即前提是list中元素类有排序规则 
   Collections.sort(list);
   Collections.reverse(list);
   Collections.shuffle(list);
4.无素可重复
5.可加入任何元素

package com.fs.test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class PeopleList {

	/**
	 * @param args
	 */
	public void m1() {
		List<People> list = new ArrayList<People>();
		list.add(new People("ss",11));
		list.add(new People("jj",13));
		list.add(new People("kk",12));
		list.add(new People("dd",11));
		list.add(new People("ll",13));
		list.add(new People("ff",12));
		list.add(new People("aa",11));
		list.add(new People("gg",13));
		list.add(new People("hh",12));
		
		System.out.println(" -------- 正序  -------- ");
		Collections.sort(list);// 正序
		for (People people : list) {
			System.out.println(people);
		}
		
		System.out.println(" -------- 倒序  -------- ");
		Collections.reverse(list);// 倒序
		for (People people : list) {
			System.out.println(people);
		}
		
		System.out.println(" -------- 乱序  -------- ");
		Collections.shuffle(list);// 乱序
		for (People people : list) {
			System.out.println(people);
		}
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		PeopleList s1 = new PeopleList();
		s1.m1();
	}

}


 

package com.fs.test;

public class People implements Comparable<People> {
	private String name;
	private Integer age;
	
	@Override
	public String toString() {
		return "People [name=" + this.name + ", age=" + this.age + "]";
	}

	public People() {
		super();
		// TODO Auto-generated constructor stub
	}

	public People(String name, Integer age) {
		super();
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	@Override
	public int compareTo(People people) {
		// TODO Auto-generated method stub
		int r = this.getAge() - people.getAge();//3 - 1
		if(r>0) {// 如果把return 1 和 -1 的位置对换,则 sort 正序 也能变倒序. reverse 同理.
			return 1;
		}else if(r<0) {
			return -1;
		}else {
			return this.getName().compareTo(people.getName()); 
		}
	}
}


 

接口Set
1.实现类 HashSet较快   TreeSet较慢
2.Set中无素不可重复
3.HashSet中顺序不可控,TreeSet顺序与加入顺序无关,与无素内容有关,自动按元素内容来排序
4.HashSet中可加入任何元素,但是TreeSet中加入的元素必须是实现了Comparable接口,即前提是TreeSet中元素类有排序规则

 

package com.fs.test;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class Test {
	private void show(Set<String> set) {
		Iterator<String> it = set.iterator();
		while (it.hasNext()) {
			String str = it.next();
			System.out.println(str);
		}
	}

	private void show2(Set<String> set) {
		for (String s : set) {
			System.out.println(s);
		}
	}

	// HashSet
	private void m1() {
		Set<String> set = new HashSet<String>();
		set.add("aa");
		set.add("bb");
		set.add("cc");
		set.add("cc");
		set.add("dd");
		set.add("dd");
		set.add("ee");
		set.add("ff");
		this.show2(set);
	}

	private void m2() {
		Set<Teacher> set = new HashSet<Teacher>();
		set.add(new Teacher("aa", 2));
		set.add(new Teacher("aa", 2));
		set.add(new Teacher("bb", 3));
		set.add(new Teacher("dd", 4));
		for (Teacher teacher : set) {
			System.out.println(teacher.toString());
		}
	}

	// TreeSet
	private void m3() {
		Set<String> set = new TreeSet<String>();
		set.add("cc");
		set.add("dd");
		set.add("dd");
		set.add("ee");
		set.add("ff");
		set.add("aa");
		set.add("bb");
		set.add("cc");
		this.show2(set);
	}
	private void m4() {
		Set<Teacher> set = new TreeSet<Teacher>();
		set.add(new Teacher("bb", 3));
		set.add(new Teacher("aa", 2));
		set.add(new Teacher("aa", 2));
		set.add(new Teacher("dd", 4));
		System.out.println(set.size());
		for (Teacher teacher : set) {
			System.out.println(teacher.toString());
		}
	}

	public static void main(String[] args) {
		Test t = new Test();
		t.m4();
	}
}


 

package com.fs.test;

public class Teacher implements Comparable<Teacher> {
	private String name;
	private int age;
	
	@Override
	public String toString() {
		String inf = "name:"+this.name+",age:"+this.age;
		return inf;
	}
	
	public Teacher(String name, int age) {
		this.name = name;
		this.age = age;
	}
	public Teacher() {
		
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}

	public int compareTo(Teacher o) {
		int r = this.getAge() - o.getAge();
		if(r>0) {
			return -1;
		}else if(r<0) {
			return 1;
		}else {
			return 0;
		}
	}
}


 

 

接口Map
1.实现类HashMap较快、 TreeMap较慢
2.Map中键不会重复,,当键重复时,将用后来值代替原有值.
3.HashMap可加入任可键值对,顺序不可控
4.TreeMap加入的键值对中的键有前提条件,键的类必须是实现了Comparable接口
5.TreeMap中顺序,按键来排序.                      


 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值