วิธีสร้างโครงสร้างข้อมูล Java Spreadsheet
ในระดับที่ง่ายที่สุด คุณสามารถสร้างโครงสร้างข้อมูลสำหรับสเปรดชีตใน Java โดยใช้อาร์เรย์ 2D อย่างง่าย อย่างไรก็ตาม วิธีนี้ทำให้เหลือความต้องการอย่างมาก ตามหลักการแล้ว โครงสร้างข้อมูลสเปรดชีตควรจะสามารถปรับขนาด แทรก และลบทั้งแถวและคอลัมน์ได้อย่างมีประสิทธิภาพ และการดำเนินการเหล่านี้มีค่าใช้จ่ายในการคำนวณในอาร์เรย์ Java ทำให้ Java จำเป็นต้องสร้างโครงสร้างข้อมูลใหม่ทั้งหมดตั้งแต่เริ่มต้นเบื้องหลังในแต่ละครั้ง เช่น มีการดำเนินการ
คุณควรใช้สิ่งที่ซับซ้อนกว่านั้นเล็กน้อย: รายการที่เชื่อมโยงของรายการที่เชื่อมโยง ซึ่งจะช่วยให้การแทรกและการลบแถวและคอลัมน์ตลอดจนการปรับขนาดของตารางเกิดขึ้นได้รวดเร็วยิ่งขึ้น อย่างไรก็ตาม จะมีค่าใช้จ่ายด้านประสิทธิภาพเล็กน้อยเมื่อถึงเวลาเข้าถึงเซลล์เฉพาะของสเปรดชีต
ขั้นตอนที่ 1
สร้างไฟล์ Java ใหม่และตั้งชื่อว่า "SpreadsheetStructure.java" หากคุณมี Integrated Development Environment (IDE) ที่ชื่นชอบ คุณสามารถทำได้โดยคลิก "ไฟล์" "คลาสใหม่" หรือคุณสามารถเปิด Windows Notepad ได้โดยคลิก "เริ่ม" "โปรแกรมทั้งหมด" "อุปกรณ์เสริม" "Notepad" และบันทึกไฟล์ด้วยชื่อไฟล์นั้น
ขั้นตอนที่ 2
สร้างอินเทอร์เฟซสำหรับคลาสของคุณโดยวางสิ่งต่อไปนี้ลงในไฟล์ที่คุณสร้างในขั้นตอนที่ 1 ขั้นตอนที่เหลือจะทุ่มเทให้กับการกรอกโค้ดสำหรับแต่ละวิธีที่กำหนดไว้ในขั้นตอนนี้:
สเปรดชีตคลาสสาธารณะ {
LinkedList data = LinkedList ใหม่(); สเปรดชีตสาธารณะ () { } โมฆะสาธารณะ addRow () { } โมฆะสาธารณะ addRow (ดัชนี int) { } โมฆะสาธารณะ removeRow (ดัชนี int) { } โมฆะสาธารณะ removeColumn (ดัชนี int) { } โมฆะสาธารณะ addColumn () { } โมฆะสาธารณะ addColumn (ดัชนี int) { } โมฆะสาธารณะ setCell(int x, int y, String newData) { } public int getWidth() { } public int getHeight() { } public String toString() { } /** * ทดสอบคลาส */ public void main(สตริง[] args) { }
}
โครงสร้างข้อมูลพื้นฐานจะเป็น LinkedList ของแถวที่มี LinkedList ของคอลัมน์ แม้ว่าอาร์เรย์ 2 มิติแบบธรรมดาจะนำไปใช้ได้ง่ายกว่า แต่ก็จะช้ากว่ามากสำหรับการดำเนินการสเปรดชีตทั่วไปหลายๆ อย่าง โดยเฉพาะอย่างยิ่งการแทรกและการลบแถว
ขั้นตอนที่ 3
วางรหัสต่อไปนี้ระหว่างวงเล็บของวิธีการสร้าง "สเปรดชีต":
สเปรดชีตสาธารณะ () { addRow (); addColumn(); }
วิธีนี้ช่วยให้มั่นใจว่าเราเริ่มต้นด้วยแถวและคอลัมน์อย่างน้อยหนึ่งแถว
ขั้นตอนที่ 4
วางข้อมูลต่อไปนี้เพื่อกรอกข้อมูลในสองวิธี addRow หนึ่งไม่มีอาร์กิวเมนต์และเพิ่มแถวที่ส่วนท้ายของสเปรดชีตโดยอัตโนมัติ ในขณะที่อีกอันอนุญาตให้ผู้ใช้ระบุตำแหน่งที่จะเพิ่มแถว:
โมฆะสาธารณะ addRow () { data.addLast (LinkedList ใหม่()); สำหรับ (int x = 0; x ()); สำหรับ (int x = 0; x
ขั้นตอนที่ 5
วางโค้ดเพื่อลบแถวในไฟล์ต้นฉบับของคุณ:
โมฆะสาธารณะ removeRow (ดัชนี int) { data.remove (ดัชนี); }
ขั้นตอนที่ 6
วางโค้ดสำหรับสองวิธี addColumn ฟังก์ชันเหล่านี้คล้ายกับเมธอด addRow มีสองแบบ แบบหนึ่งสำหรับเพิ่มคอลัมน์ที่ส่วนท้ายของชีต และอีกแบบสำหรับแทรกคอลัมน์ตรงกลาง:
โมฆะสาธารณะ addColumn () { สำหรับ (LinkedList l: data) { l.addLast (สตริงใหม่ ()); } } โมฆะสาธารณะ addColumn (ดัชนี int) { สำหรับ (LinkedList l: data) { l.add (ดัชนี สตริงใหม่ ()); } }
ขั้นตอนที่ 7
วางรหัสสำหรับการลบคอลัมน์:
โมฆะสาธารณะ removeColumn (ดัชนี int) { สำหรับ (LinkedList l: data) { l.remove (ดัชนี); } }
ขั้นตอนที่ 8
วางโค้ดที่กำหนดเนื้อหาของเซลล์ที่กำหนดให้เป็นสตริงข้อมูล:
โมฆะสาธารณะ setCell (int x, int y, String newData) { data.get (x).set (y, newData); }
ขั้นตอนที่ 9
กรอกวิธีการรับความกว้างและความสูงของสเปรดชีต:
int สาธารณะ getWidth () { ส่งคืน data.getFirst ().size (); } สาธารณะ int getHeight() { ส่งคืน data.size(); }
ขั้นตอนที่ 10
ใช้วิธี toString การดำเนินการนี้จะส่งคืนสตริงที่จัดรูปแบบซึ่งแสดงในตารางแถวและคอลัมน์ ข้อมูลในสเปรดชีต:
สตริงสาธารณะ toString () { String temp = ""; สำหรับ (LinkedList l : data) { สำหรับ (Object o : l) { String s = (String) o; ถ้า (s.equals("")) s = "-empty-"; อุณหภูมิ += s + " "; } อุณหภูมิ += "\n"; } กลับอุณหภูมิ; }
วางวิธีการหลักต่อไปนี้ที่ทำให้โครงสร้างข้อมูลของสเปรดชีตทำงานตามขั้นตอนและรับรองว่าทุกอย่างทำงานตามที่คาดไว้:
โมฆะคงที่สาธารณะหลัก (สตริง [] args) { แผ่นสเปรดชีต = สเปรดชีตใหม่ (); System.out.println(sheet.toString()); System.out.print(sheet.getWidth()); System.out.print("x"); System.out.println(sheet.getHeight()); แผ่น.addRow(); System.out.print(sheet.getWidth()); System.out.print("x"); System.out.println(sheet.getHeight()); แผ่น.setCell(0,0,"1"); แผ่น.setCell(0,1,"2"); แผ่น.setCell(1,0,"3"); แผ่น.setCell(1,1,"4"); System.out.println(sheet.toString()); แผ่น.addColumn(1); sheet.setCell(1,0, "อุณหภูมิ"); sheet.setCell(1,1, "อุณหภูมิ"); System.out.println(sheet.toString()); แผ่น.removeRow(1); System.out.println(sheet.toString()); แผ่น.removeColumn(1); System.out.println(sheet.toString()); }