Set集合

      set 有2个常用子接口    特点:里面没有任何的重复元素    没有对Collection进行扩充

             TreeSet:  有序存放

              Hashset:散列存放 

     1————Hashset:散列存放 

           Hashset:子类中的内容是没有顺序的

package org.lxh.collectiondemo.setdemo;

import java.util.HashSet;
import java.util.Set;

public class HashSetAddDemo {

	public static void main(String[] args) {
		Set<String> allSet = new HashSet<String>();
		allSet.add("A"); // 增加
		allSet.add("B"); // 增加
		allSet.add("C"); // 增加
		allSet.add("C"); // 增加重复元素
		allSet.add("C"); // 增加重复元素
		allSet.add("D"); // 增加
		allSet.add("E"); // 增加
		System.out.println(allSet);
	}

}


2————TreeSet:  有序存放

                TreeSet:进行排序的操作接口

package org.lxh.collectiondemo.setdemo;

import java.util.Set;
import java.util.TreeSet;

public class TreeSetAddDemo {

	public static void main(String[] args) {
		Set<String> allSet = new TreeSet<String>();
		allSet.add("C"); // 增加重复元素
		allSet.add("D"); // 增加 
		allSet.add("E"); // 增加
		allSet.add("A"); // 增加
		allSet.add("B"); // 增加
		allSet.add("C"); // 增加
		allSet.add("C"); // 增加重复元素
		System.out.println(allSet);
	}

}

3————关于排序的说明

package org.lxh.collectiondemo.setdemo;

public class Person implements Comparable<Person> {
	private String name;
	private int age;

	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}

	public String toString() { // 覆写toString()
 		return "姓名:" + this.name + ";年龄:" + this.age;
	}

	public boolean equals(Object obj) {//用于比较是否是同一个人    即是否出现重复项
		if (this == obj) {
			return true;
		}
		if (!(obj instanceof Person)) {
			return false;
		}
		Person p = (Person) obj;
		if (this.name.equals(p.name) && this.age == p.age) {
			return true;
		} else {
			return false;
		}
	}

	public int hashCode() { // 这个方法的返回值都是通过一个公式计算的(用于获得名字的hashCode码)
                        // 此时的公式:名字的hashCode * age
		return this.name.hashCode() * this.age;
	}

	public int compareTo(Person o) {//比较大小先比年龄  后比名字
		if (this.age > o.age) {
			return 1;
		} else if (this.age < o.age) {
			return -1;
		} else {
			return this.name.compareTo(o.name); // 比较name
		}
	}
}

测试类:

package org.lxh.collectiondemo.setdemo;

import java.util.Set;
import java.util.TreeSet;

public class TreeSetPersonAddDemo {

	public static void main(String[] args) {
		Set<Person> allSet = new TreeSet<Person>();
		allSet.add(new Person("张三",30)); // 增加重复元素
		allSet.add(new Person("李四",30)); // 增加重复元素
		allSet.add(new Person("王五",31)); // 增加重复元素
		allSet.add(new Person("赵六",32)); // 增加重复元素
		allSet.add(new Person("孙七",32)); // 增加重复元素
		allSet.add(new Person("孙七",32)); // 增加重复元素
		System.out.println(allSet);
	}

}


Iteartor(重点)

     :迭代接口

           方法:1---public  boolean  hasNext()  //将指针向下移动,判断是否还有内容

                       2---public     E next()      //取出当前指针位置的内容

                       3---public   void   romove()    //删除当前指针位置的内容

              如果想要为Integer接口实例化,则必须使用Collection接口的如下方法:

                        public  Integer<T>    integer()

package org.lxh.iteartordemo;

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

public class IteratorDemo01 {
	public static void main(String[] args) {
		List<String> allList = new ArrayList<String>();
		allList.add("A");
		allList.add("B");
		allList.add("C");
		allList.add("D");
		allList.add("E");
		Iterator<String> iter = allList.iterator();
		while (iter.hasNext()) {
			System.out.print(iter.next() + "、");
		}
	}

}


删除

package org.lxh.iteartordemo;

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

public class IteratorDemo02 {
	public static void main(String[] args) {
		List<String> allList = new ArrayList<String>();
		allList.add("A");
		allList.add("B");
		allList.add("C");
		allList.add("D");
		allList.add("E");
		Iterator<String> iter = allList.iterator();
		while (iter.hasNext()) {
			String str = iter.next(); // 取出内容
			if ("C".equals(str)) {
				iter.remove();// 删除元素
			}
			System.out.print(str + "、");
		}
		System.out.println("删除之后的集合:" + allList);
	}
}


allList.remove(str);// 删除元素,使用的是List接口的删除 

会出错   因为所有的Iteartor实际上,只是将一个集合的内容交给了Integer输出而已,而如果直接使用了集合的remove()方法,删除的话,则会破坏整个集合的内容,所以输出的时候会出现问题

   foreach

           在数组的输出上可以试用foreach完成,那么对于集合也同样适用

package org.lxh.foreachdemo;

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

public class ForeactDemo {
 public static void main(String[] args) {
  List<String> allList = new ArrayList<String>();
  allList.add("A");
  allList.add("B");
  allList.add("C");
  allList.add("D");
  allList.add("E");
  for (String str : allList) {
   System.out.print(str + "、");
  }
 }

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值