Day5 Java学习日记

Day5 2019.11.5

集合(面试比重大)

Set集合

  • set
  • HashSet() 无序列表 如果放入自定义的类,必须重写hashCode()和equals()方法
  • TreeSet() 有序列表 使用***自定义类*** 时,必须重写hashCode()和equals()方法,还要在类里实现比较器接口Compareble

代码

public int compareTo(Object o) {
	//将此对象与指定的对象进行比较以进行排序。 
	//返回一个负整数,零或正整数,因为该对象小于,等于或大于指定对象。 
   Student stu=(Student)o;
   
   int i=0;
  if(this.age==stu.age)
  {i=0;}
  if(this.age>stu.age)
  {i=1;}
  if(this.age

注释

set可以放一个null,但是不能够放入重复的元素

List

  • List(采用线性列表的存储方式,长度可动态改变)
  • ArrayList
    • ArrayList类是List接口的一个具体实现类
    • ArrayList 对象实现了可变大小的数组
    • 随机访问和遍历元素时,它提供更好的性能
  • LinkedList(链接列表)
  • 调用remove方法会调用equals方法 来找到内容相同的元素 完成删除

注释

  1. 具有顺序的集合
  2. 元素可以通过其整型下标访问
  3. 可以包含重复元素

Map 映射(键值对形式)

  • Map(采用键-值对的存储方式,长度可动态改变)
  • HashMap 不考虑线程安全 都是先put值 在entrySet() 最后foreach遍历输出
  • HashTable 线程安全

注释

  • Map(K,V) K值相同时 会覆盖之前的值

总结

  • Map接口: 按 “键-值”对进行插入,(键、值都是对象)可以按照键来搜索值对象
  • 可以查找值的集合,也可以查找键的集合
    • HashMap:一种未分类,未排序的映射类,不需要顺序时HashMap是一种最好的选择,因为其效率较高,HashMap允许集合中有一个null键和多个null值。
    • Hashtable:Hashtable 是HashMap的同步版本,但Hashtable不允许有任何的null存在。
    • LinkedHashMap:和linkedHashSet一样,LinkedHashMap维护插入和访问的顺序,添加和删除比HashMap慢,但遍历的速度要更快。
    • TreeMap:一个顺序的Map集合。

注释:一个类只做一件事情 去写代码

作业

  • 1.使用集合ArrayList存放如下的联系地址信息, 并打印输出

Day5 Java学习日记_第1张图片

  • 提示:
    • 1)定义描述地址信息的类Address, 并重写toString()方法
    • 2)构建集合 List
      addressList = new ArrayList
      ();

代码如下

Address.java

/**
 * 
 * @author FDL
 *
 */
public class Address {
	
	private String name;
	private String street;
	private String city;
	private String province;
	private String country;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getStreet() {
		return street;
	}
	public void setStreet(String street) {
		this.street = street;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public String getProvince() {
		return province;
	}
	public void setProvince(String province) {
		this.province = province;
	}
	public String getCountry() {
		return country;
	}
	public void setCountry(String country) {
		this.country = country;
	}
	@Override
	public String toString() {
		return "[\n姓名:" + name + "\n街道:" + street + "\n市(县):" + city
				+ "\n省(自治区):" + province + "\n国家(地区):" + country + "\n]";
	}
	public Address(String name, String street, String city, String province,
			String country) {
		super();
		this.name = name;
		this.street = street;
		this.city = city;
		this.province = province;
		this.country = country;
	}
	public Address() {
		super();
	}
	
	

}

TestAddress.java

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


public class TestAddress {

	public static void main(String[] args) {
		List
addressList =new ArrayList
(); Address a1=new Address("张三", "王府井", "北京", "北京", "中国"); Address a2=new Address("李四", "张扬路", "上海", "上海", "中国"); Address a3=new Address("John lenon", "12 Park Avenue", "California", "CaliforniaState", "USA"); addressList.add(a1); addressList.add(a2); addressList.add(a3); for (Address address : addressList) { System.out.println(address); } } }

运行结果:

Day5 Java学习日记_第2张图片

  • 2.构建描述学生的类Student, 属性:姓名和年龄
    构建集合来存放学生对象信息,但要保证学生的年龄按大小顺序进行排序
    最后遍历输出格式如下图所示
    Day5 Java学习日记_第3张图片

  • 提示:

    • 1)使用Set来存放
    • 2)对于Student类要实现Comparable 接口

代码如下

Student2.java

public class Student2 implements java.lang.Comparable{
	private String name;
	private int age;
	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 Student2(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	public Student2() {
		super();
	}
	@Override
	public String toString() {
		return " " + name + " " + age + " ";
	}
	@Override
	public int compareTo(Object o) {
		//将此对象与指定的对象进行比较以进行排序。 
		//返回一个负整数,零或正整数,因为该对象小于,等于或大于指定对象。 
		//基础是二叉树 
		 Student2 stu=(Student2)o;
		   //由大到小排列
		   int i=0;
		  if(this.age==stu.age) //不处理
		  {
			  i=0;// 相等 不处理
		  }
		  if(this.agestu.age)
		  {
			  i=-1;//大于 往左放
		  }
			return i;
	}
}

TestStudent2.java

import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;

public class TestStudent2 {

	public static void main(String[] args) {

		TreeSet tree = new TreeSet();
		tree.add(new Student2("Linda", 21));
		tree.add(new Student2("Mary", 28));
		tree.add(new Student2("John", 26));
		tree.add(new Student2("Tom", 25));
		tree.add(new Student2("Jack", 24));
		tree.add(new Student2("Lisa", 22));

		show(tree);
	}

	public static void show(Set set) {
		System.out.println("---------------------------");
		System.out.println("  姓名年龄");
		for (Student2 s : set) {
			System.out.println("---------------------------");
			System.out.println(s);
		}
		System.out.println("---------------------------");
	}

}

运行结果

Day5 Java学习日记_第4张图片


你可能感兴趣的:(Day5 Java学习日记)