集合的取出方式和保证元素的唯一性方式方法

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

Map集合取出元素的原理:
先将map集合转成Set集合。然后对set集合进行迭代。
keySet:将所有的键取出存放在Set集合中,对Set集合进行迭代,并通过map集合的get方法,获取键所对应的value。

entrySet:将键值的关系取出存入到了Set集合中。键值关系有自己的类型就是:Map.Entry。
Map.Entry就是Map接口中定义了一个静态接口Entry
可以通过Map.Entry对象的getKey(),getValue().

*1、 编写一个类,在main方法中定义一个Map对象(采用泛型),加入若干个对象,然后遍历并打印出各元素的key和value。
 *@param args
 */
import java.util.*;
public class Test1 {
public static void main(String[] args)
{
Map<String,String> map=new HashMap<String,String>();//创建对象
map.put("0011", "张三");//添加元素
map.put("0013", "李四");
map.put("0014", "王五");
map.put("0012", "王维");

//第一种取出方式
Set<Map.Entry<String,String>> entrySet=map.entrySet();//map的取出方式,将map集合中中的映射关系存到Set集合中
Iterator<Map.Entry<String, String>> it = entrySet.iterator();//获取迭代器
while(it.hasNext())
{
Map.Entry<String,String> me=it.next();//获取下一个元素
String key=me.getKey();//获取键值
String value=me.getValue();//获取value值
System.out.println(key+"---"+value);
}

//第二种取出方式

Set<String> keySet=map.keySet();
Iterator<String> it=keySet.iterator();
while(it.hasNext()){
String key=it.next();//获取键值
String value=map.get(key);//通过键值,获取属性值
System.out.println(key+"___"+value);
}
}

Tree可以对Set集合中的元素进行排序,当排序时,主要条件相同时,一定要判断次要条件。
保证元素的唯一性。
第一种排序方式:让元素自身具备比较性   实现comparable接口,覆盖compareTo方法。
第二种排序方式:定义一个类  实现comparator接口,覆盖compare方法。
import java.util.*;
import java.util.TreeSet;
/**
 * @author Administrator
 *
 */
public class TreeSetDemo {
public static void main(String[] args){
TreeSet ts=new TreeSet();//set集合
//TreeSet ts=new TreeSet(new Student());
ts.add(new Student("zhangliu",23));//创建对象,添加元素
ts.add(new Student("gaosan",20));
ts.add(new Student("gaosan",20));
ts.add(new Student("shuifang",42));
ts.add(new Student("liushui",69));
ts.add(new Student("lisi",80));
Iterator it=ts.iterator();//用迭代器取出
while (it.hasNext()){
Student s=(Student)it.next();//获取下一个元素
System.out.println(s.getName()+"/"+s.getAge());
}
}

第一种排序方式:让元素自身具备比较性   实现comparable接口,覆盖compareTo方法。
class Student implements Comparable{
private String name;
private int age;
Student(String name,int age){
this.name=name;
this.age=age;
}
public int compareTo(Object obj){
if(!(obj instanceof Student))
throw new RuntimeException("不是学生对象");
Student s=(Student)obj;//强制转换,向下转型
System.out.println(this.name +".....compareTo......"+s.name);
if (this.age>s.age)//比较年龄大小
return 1;
if (this.age==s.getAge())//当年龄相等的时候,比较名字
return this.name.compareTo(s.name);
return -1;
}

public String getName() {
return name;
}
public int getAge() {
return age;
}

}
第二种排序方式:定义一个类  实现comparator接口,覆盖compare方法。
 class Student implements Comparator {
private String name;
private int age;
Student(String name,int age){
this.name=name;
this.age=age;
}
public Student() {
// TODO Auto-generated constructor stub
}
//定义比较器,将比较器对象作为参数传递给TreeSet集合的构造函数
public int compare(Object obj,Object ob){
Student s1=(Student)obj;//转型
Student s2=(Student)ob;
int num=s1.getName().compareTo(s2.getName());//对名字进行比较
if (num==0)
return new Integer(s1.getAge()).compareTo(new Integer(s2.getAge()));//对年龄进行比较
/*{
if (s1.getAge()>s2.getAge())
return 1;
if (s1.getAge()==s2.getAge())
return 0;
return -1;
}*/
return num;
}

public String getName() {
return name;
}
public int getAge() {
return age;
}

}




---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值