บทความนี้อธิบายการใช้งาน Java ของฟังก์ชั่นความคล้ายคลึงกันของโคไซน์ของการคำนวณเบาบางเมทริกซ์ แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
นำเข้า java.util.hashmap; คลาสสาธารณะ myUdf { /*** UDF ประเมินอินเทอร์เฟซ** UDF เป็นแบบหนึ่งต่อหนึ่งในระดับบันทึกและหนึ่งต่อหนึ่งหรือหลายต่อหนึ่งในฟิลด์ วิธีการประเมินจะเรียกว่าครั้งเดียวในแต่ละระเบียนอินพุตเป็นหนึ่งฟิลด์หรือมากกว่าและเอาต์พุตเป็นหนึ่งฟิลด์*/ การประเมินสองครั้งสาธารณะ (สตริง A, สตริง b) {// todo: โปรดแก้ไขพารามิเตอร์และค่าคืนตามที่ต้องการและใช้ตรรกะของคุณเองที่นี่ถ้า String temp1 [] = a.split (","); String temp2 [] = b.split (","); if (temp1 == null || temp2 == null) {return 0.0; } hashmap <string, double> map1 = new hashmap <string, double> (); hashmap <string, double> map2 = new hashmap <string, double> (); สำหรับ (สตริงอุณหภูมิ: temp1) {สตริง t [] = temp.split (":"); map1.put (t [0], double.parsedouble (t [1])); } สำหรับ (สตริงอุณหภูมิ: temp2) {สตริง t [] = temp.split (":"); map2.put (t [0], double.parsedouble (t [1])); } double fenzi = 0; double fenmu1 = 0; สำหรับ (สตริง i: map1.keyset ()) {double value = map1.get (i); if (map2.get (i)! = null) {fenzi+= value*map2.get (i); } fenmu1+= value*value; } double fenmu2 = 0; สำหรับ (double i: map2.values ()) {fenmu2+= i*i; } double fenmu = math.sqrt (fenmu1)*math.sqrt (fenmu2); กลับ Fenzi/Fenmu; } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {สตริง a = "12: 500,14: 100,20: 200"; สตริง b = "12: 500,14: 100,30: 100"; myudf myudf = new myudf (); System.out.println (myudf.evaluate (a, b)); -ผลการทำงาน:
0.9135468796041984
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับอัลกอริทึม Java ผู้อ่านที่มีความสนใจในเว็บไซต์นี้สามารถดูหัวข้อ: "โครงสร้างข้อมูล Java และการสอนอัลกอริทึม", "บทสรุปของเคล็ดลับการดำเนินงาน Java Dom", "บทสรุปของไฟล์ Java และเคล็ดลับการดำเนินการไดเรกทอรี" และ "สรุป
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน