1. 程式人生 > >java://Comparator、Comparable的用法(按照要求將map集合的鍵值對進行順序輸出)

java://Comparator、Comparable的用法(按照要求將map集合的鍵值對進行順序輸出)

import java.util.*;
public class Person implements Comparable<Person>//使Person的屬性具有比較性
{
      private String name;
      private int age;
      public Person(String name,int age)//初始化建構函式
      {
            this.name = name;
            this.age = age;
      }
      public void set(String name,int
age)//重新設定姓名和年齡 { this.name = name; this.age = age; } public String getName()//獲取姓名 { return name; } public int getAge()//獲取年齡 { return age; } public String toString()//將姓名和年齡以字串的形式返回 {
return name+","+age; } //出現重名時,再找到另一個hash地址用來儲存資料(底層自動呼叫) public int hashCode() { return name.hashCode()+age*34; } //判斷接受的類是不是Person類,不是就丟擲異常(底層自動呼叫) public boolean equals(Object obj) { if(!(obj instanceof Person))
throw new ClassCastException("不是Person類"); Person p = (Person)obj; return this.name.equals(p.name) && this.age==p.age; } public int compareTo(Person p)//(按照自己的要求去作比較) { int num=new Integer(this.age).compareTo(p.age); return num==0?this.name.compareTo(p.name):num; } } public class Test { public static <T>void sop(T t) //使用泛型接收引數 { System.out.println(t); } public static void main(String args[]) throws Exception { //建立一個map集合,用來儲存資料 <>表示接收的是泛型,即指定的型別 TreeMap<Person,String> map = new TreeMap<Person,String>(/*new Mycompare()*/); //也可以使用這個被註釋掉的自定義的比較器 //往集合新增資料 map.put(new Person("czhangsan1",11),"beijing"); map.put(new Person("zhangsan5",15),"nanjing"); map.put(new Person("azhangsan5",10),"shanghai"); map.put(new Person("zhangsan2",20),"haierbing"); map.put(new Person("bzhangsan2",20),"beijing"); map.put(new Person("zhangsan3",12),"shanghai"); map.put(new Person("zhangsan4",19),"changchun"); map.put(new Person("zhangsan4",10),"changchun"); map.put(new Person("zhangsan4",10),"zhengzhou"); //將map集合轉換為set集合,因為map集合沒有迭代器 ,而set集合有 Set<Map.Entry<Person,String>> entryset = map.entrySet(); //獲取迭代器 Iterator<Map.Entry<Person,String>> it = entryset.iterator(); //用迭代器取資料 while(it.hasNext()) { Map.Entry<Person,String> m = it.next(); Person key = m.getKey();//取出鍵 String value =m.getValue();//取出值 sop(key+"......."+"adress:"+value);//列印鍵和值 } } } class Mycompare implements comparator<Perosn>//自定義一個比較器 { public int compare(Person p1,Person p2) { int num = p1.getName().compareTo(p2.getName()); return num==0?new Integer(p1.getAge()).compareTo(new Integer(p2.getAge())):num; } } //注意:上面的兩種形式都實現了比較,任選其中一種就可以。要麼實現comparable介面;要麼在集合中傳入自定義的比較器。

相關推薦

java://ComparatorComparable用法(按照要求map集合進行順序輸出)

import java.util.*; public class Person implements Comparable<Person>//使Person的屬性具有比較性 { private String name; private int age;

spring boot 程式碼註解配置獲取ymlproperties檔案中的map

一、yml獲取自定義鍵值對 yml中的鍵值對 test: map: key1: value1 key2: value2 key3: value3 pom中的依賴配置 <dependency> <groupId>org.sprin

Java 進階——集合體系詳解之Map體系集合

引言 一Map體系的訪問方式 Map的訪問也和HashSet的特點一樣是無需的,Map體系與Set體系不同並不實現Iterator介面,當然也不會具有迭代器,那麼Map集合怎麼訪問呢?間接通過Set的迭代器,Map集合訪問方式主要有兩種:keySet和e

java中獲取map方法

1、我們知道假設在java中的map,我們知道某一個鍵時,我們很容易通過鍵找到對應的值,這個是map中最常用的。 比如: map<Integer,String> map=new HashMap<Integer,String>(); map.put("

map對調

這裡對調是指調換 key 和 value。如果 map 的值型別可以作為 key 且所有的 value 是唯一的,那麼通過下面的方法可以簡單的做到鍵值對調。 package main import ( "fmt" ) var ( barVal

java內外部比較器(ComparatorComparable)使用場景與詳解

內外部比較器使用: 內部比較器:需比較的類實現介面 Comparable,使該類對外提供一個預設比較的實現 public class Test { public static void main(String[] args) {

JAVA StackQueue 用法筆記

總結。 1.棧和佇列 Stack Queue API java.util.Stack; java.util.Queue; java.util.LinkedList;

JAVA Comparator 介面排序用法

java的比較器有兩類,分別是Comparable介面和Comparator介面。 在為物件陣列進行排序時,比較器的作用非常明顯,首先來講解Comparable介面。 讓需要進行排序的物件實現Comparable介面,重寫其中的compareTo(T o)方法,在其中

map中的給一個java物件

Map tag=new HashMap(); tag.put("001"," 張三"); tag.put("002","李四"); my_UpInfoVo my_UpInfoVo = new My_UpInfoVo(); BeanUtils.populate(my_UpInfoVo, tag); &n

form中的轉換為函式,Json.parse和json.stringify()用法

var utils = {//將form中的值轉換為鍵值對函式 getFormJSON: function(form) { var jsonData = {};

JavaList集合內的元素進行順序倒序隨機排序的示例程式碼

import java.util.Collections; import java.util.LinkedList; import java.util.List; public class Test { List list = new LinkedLis

.Net集合M內非空引數值的引數按照引數名ASCII碼從小到大排序(字典序),並使用URL的格式(即key1=value1&key2=value2…)拼接成字串stringA

前言:    前段時間因為專案進度比較繁重所以一直都沒有時間更新部落格,內心深深的負重感,沒有履行年初立下的flag。不過這個月會把上個月沒有完成的任務補上來,咱們可不是喜歡拖欠任務的攻城獅。哈哈,廢話不多說,接下來是要總結下關於對接支付時我們經常會遇到的將對應集合中的引數按照ASCII碼按照從小到大排序,

009-java中常用的單個

RKE tab string class lan integer eva guava 鍵值對 1、Java 6提供AbstractMap.SimpleEntry<K,V>和AbstractMap.SimpleImmutableEntry<K,V>

兩個物件key相同但是value不同,value不同的以物件形式輸出

let obj={ name:'jack', age:18, sex:'girl' } let obj2={ name:'rose', age:18, sex:'boy' }

兩個象key相同但是value不同,value不同的象形式輸出

鍵值對 ons 形式 {} name 但是 ole 相同 key let obj={ name:'jack', age:18, sex:'girl' } let obj2={

位址列引數擷取成

getString (str) { let str1 = str.split('&') let strArr = [] str1.forEach(element => { let str2 = element.split('=')

地址欄參數截取成

class 截取 let bsp col color 鍵值 element ons getString (str) { let str1 = str.split(‘&‘) let strArr = [] str1.for

分割流:例如,一個圖片(53k)以10k為單位(單位的大小可隨著檔案的大小進行調整)進行分割,並分割資訊以鍵值對的形式儲存到.properties檔案中。最後還可以分割的檔案能夠完整的合併在一起

將一個53k的圖片以10k為單位進行分割,最後再將分割的檔案合併到一起。 首先進行檔案的分割,這裡使用了兩種方法: (1)其中splitFile(file)方法只是簡單地將圖片進行了分割。 (2)splitFile_2(file)方法除了將檔案進行分割,還將一些配置資訊進行了儲存

java的使用

Map集合沒有繼承Collection介面,但是其提供了key到value的對映。每一個key不能有相同,每個key只能對映一個value值。 Map介面常用方法: 方法 功能描述 put(K key, V value) 向集合中新增指定的key與valu

Spark之操作-Java篇(三)

一、簡介  鍵值對 RDD 是 Spark 中許多操作所需要的常見資料型別。本章就來介紹如何操作鍵值對 RDD。鍵值對 RDD 通常用來進行聚合計算。我們一般要先通過一些初始 ETL(抽取、轉 化、裝載)操作來將資料轉化為鍵值對形式。鍵值對 RDD 提供了一些新的操作介面(