การคัดลอกรหัสมีดังนี้:
นำเข้า Java.util.Arrays;
-
* การใช้งานตารางเชิงเส้นต่อเนื่อง
-
Linelist ชั้นเรียนสาธารณะ <E> {
ขนาด int ส่วนตัว; // ความยาว
วัตถุส่วนตัว [] อาร์เรย์; // อาร์เรย์พื้นฐาน
ส่วนตัวสุดท้าย int default_length = 16; // ความยาวเริ่มต้น
-
* วิธีการก่อสร้างที่ไม่ใช่พารามิเตอร์
-
linelist สาธารณะ () {
ขนาด = 0;
// สร้างอาร์เรย์โดยใช้ความยาวเริ่มต้น
array = วัตถุใหม่ [default_length];
-
-
* ระบุความยาวสำหรับการก่อสร้าง
* ความยาว @param ระบุความยาวเริ่มต้น
-
linelist สาธารณะ (ความยาว int) {
ถ้า (ความยาว <0) {
โยน unlegalargumentException ใหม่ ("ความยาวเริ่มต้นผิดกฎหมาย:"+ความยาว);
-
// สร้างอาร์เรย์ที่มีความยาวที่ระบุ
array = วัตถุใหม่ [ความยาว];
-
-
* ระบุองค์ประกอบการเริ่มต้นและความยาวสำหรับการก่อสร้าง
* องค์ประกอบ @param เริ่มต้นองค์ประกอบ
* @param ความยาวการเริ่มต้นความยาว
-
linelist สาธารณะ (องค์ประกอบ e, ความยาว int) {
ถ้า (ความยาว <1) {
โยน unlegalargumentException ใหม่ ("ความยาวเริ่มต้นผิดกฎหมาย:"+ความยาว);
-
// สร้างอาร์เรย์ที่มีความยาวที่ระบุ
array = วัตถุใหม่ [ความยาว];
// เริ่มต้นองค์ประกอบแรก
อาร์เรย์ [0] = องค์ประกอบ;
ขนาด ++;
-
-
* ระบุองค์ประกอบการเริ่มต้นสำหรับการก่อสร้าง
* องค์ประกอบ @param เริ่มต้นองค์ประกอบ
-
linelist สาธารณะ (องค์ประกอบ e) {
// เริ่มต้นอาร์เรย์ด้วยความยาวเริ่มต้น
array = วัตถุใหม่ [default_length];
// เริ่มต้นองค์ประกอบแรก
อาร์เรย์ [0] = องค์ประกอบ;
-
-
* รับจำนวนองค์ประกอบ
-
ขนาด int สาธารณะ () {
ขนาดกลับ;
-
-
* ตรวจสอบว่ามันว่างเปล่า
-
บูลีนสาธารณะ isempty () {
ขนาดกลับ == 0;
-
-
* ตรวจสอบว่าองค์ประกอบนี้รวมอยู่ด้วยหรือไม่
-
บูลีนสาธารณะประกอบด้วย (e e) {
if (indexof (e) == -1) {
กลับเท็จ;
-
กลับมาจริง;
-
-
* รูปแบบเป็นอาร์เรย์
-
วัตถุสาธารณะ [] toarray () {
return array.copyof (อาร์เรย์, ขนาด);
-
-
* เพิ่มองค์ประกอบลงในหางของตารางเชิงเส้น
* @param e
* @กลับ
-
โมฆะสาธารณะเพิ่ม (e e) {
ExtendCapacity (ขนาด+1);
อาร์เรย์ [ขนาด] = e;
ขนาด ++;
-
-
* ขยายกำลังการผลิต
* @param ความยาวความยาวที่ต้องการ
-
โมฆะส่วนตัว ExtendCapacity (ความยาว int) {
// ความยาวอาร์เรย์ปัจจุบันและความยาวที่ต้องการควรเป็นค่าสูงสุด
int mincapacity = math.max (array.length, ความยาว);
// ตัดสินว่าจำเป็นต้องมีการขยายกำลังการผลิตหรือไม่
if (mincapacity - array.length> 0) {
// ความยาวอาร์เรย์เพิ่มขึ้นครึ่งหนึ่ง
int newLength = array.length + array.length/2;
// หากความยาวใหม่มีขนาดเล็กกว่าข้อกำหนดให้ใช้ความยาวที่ต้องการเป็นความยาวอาร์เรย์
if (newLength <mincapacity) {
newLength = mincapacity;
-
// ความยาวอาร์เรย์ไม่เกินจำนวนเต็ม max_value
if (newLength> integer.max_value - 8) {
newLength = integer.max_value;
-
// การขยายอาร์เรย์
array = array.copyof (อาร์เรย์, newLength);
-
-
-
* ลบองค์ประกอบทั้งหมดนี้ออกจากตารางเชิงเส้น
* องค์ประกอบ @param e ที่ต้องลบออก
* @กลับ
-
โมฆะสาธารณะ removeAll (e e) {
ถ้า (e == null) {
สำหรับ (int i = 0; i <size; i ++) {
if (array [i] == null) {
fastremove (i);
-
-
}อื่น{
สำหรับ (int i = 0; i <size; i ++) {
if (e.equals (array [i])) {
fastremove (i);
-
-
-
-
-
* ลบองค์ประกอบที่ดัชนีและเลื่อนองค์ประกอบต่อไปนี้ไปข้างหน้าในทางกลับกัน
* @param ดัชนีดัชนีที่ต้องลบ
-
โมฆะส่วนตัว fastremove (ดัชนี int) {
if (size-index-1> 0) {
// อาร์เรย์เริ่มจากดัชนี+1 และทั้งหมดก้าวไปข้างหน้า
System.arrayCopy (อาร์เรย์, ดัชนี+1, อาร์เรย์, ดัชนี, ขนาด 1);
-
// โปรดล้างองค์ประกอบสุดท้าย
อาร์เรย์ [-ขนาด] = null;
-
-
* ล้างตารางเชิงเส้น
-
โมฆะสาธารณะ Clear () {
// เติมอาร์เรย์ทั้งหมดลงใน null
array.fill (อาร์เรย์, null);
// เปลี่ยนจำนวนองค์ประกอบเป็น 0
ขนาด = 0;
-
-
* รับองค์ประกอบที่ดัชนี
* @param ดัชนี
* @return Element at index
-
@suppresswarnings ("ไม่ได้ตรวจสอบ")
สาธารณะ e get (int index) {
checkIndex (ดัชนี);
return (e) อาร์เรย์ [ดัชนี];
-
-
* ตรวจสอบว่าดัชนีอยู่นอกขอบเขตหรือไม่
* @param ดัชนี
-
โมฆะส่วนตัว checkIndex (ดัชนี int) {
if (index> = size || index <0) {
โยน indexoutofboundsexception ใหม่ ("indexoutboundsexception");
-
-
-
* แก้ไของค์ประกอบที่ดัชนีเป็นองค์ประกอบใหม่
* ตำแหน่งดัชนีดัชนี @param
* องค์ประกอบ @param
* @return Element ที่ดัชนีดั้งเดิม
-
@suppresswarnings ("ไม่ได้ตรวจสอบ")
Public E SET (INT INDEX, E Element) {
checkIndex (ดัชนี);
E e = (e) อาร์เรย์ [ดัชนี];
อาร์เรย์ [ดัชนี] = องค์ประกอบ;
กลับ E;
-
-
* แทรกองค์ประกอบที่ระบุที่ดัชนีที่ระบุ
* ตำแหน่งดัชนีดัชนี @param
* องค์ประกอบ @param
-
โมฆะสาธารณะเพิ่ม (ดัชนี int, องค์ประกอบ e) {
// ตรวจสอบดัชนี
checkIndex (ดัชนี);
// จำเป็นต้องขยายกำลังการผลิต
ExtendCapacity (ขนาด+1);
// คัดลอกอาร์เรย์
System.arrayCopy (อาร์เรย์, ดัชนี, อาร์เรย์, ดัชนี+1, ขนาด-ดัชนี);
อาร์เรย์ [ดัชนี] = องค์ประกอบ;
-
-
* ลบองค์ประกอบที่ดัชนี
* ดัชนีดัชนี @param
* @return องค์ประกอบที่ถูกลบ
-
@suppresswarnings ("ไม่ได้ตรวจสอบ")
สาธารณะ e ลบ (ดัชนี int) {
checkIndex (ดัชนี);
// รับองค์ประกอบตำแหน่งดัชนี
E e = (e) อาร์เรย์ [ดัชนี];
fastremove (ดัชนี);
กลับ E;
-
-
* รับดัชนีของตำแหน่งที่องค์ประกอบปรากฏขึ้นเป็นครั้งแรก
* องค์ประกอบ @param e เพื่อค้นหา
* @return ถ้าเป็น -1 หมายความว่าตารางเชิงเส้นไม่มีองค์ประกอบนี้
-
INT INDEM สาธารณะของ (e e) {
ถ้า (e == null) {
สำหรับ (int i = 0; i <size; i ++) {
if (e == array [i]) {
กลับฉัน;
-
-
-
สำหรับ (int i = 0; i <size; i ++) {
if (e.equals (array [i])) {
กลับฉัน;
-
-
กลับ -1;
-
-
* รับดัชนีของการเกิดขึ้นครั้งสุดท้ายขององค์ประกอบ
* องค์ประกอบ @param e เพื่อค้นหา
* @return ถ้าเป็น -1 หมายความว่าตารางเชิงเส้นไม่มีองค์ประกอบนี้
-
INT INT LASTINDEXOF (E E) {
// ตัดสินว่าองค์ประกอบนั้นเป็นโมฆะ
ถ้า (e == null) {
สำหรับ (int i = size-1; i> = 0; i-) {
if (e == array [i]) {
กลับฉัน;
-
-
-
สำหรับ (int i = size-1; i> = 0; i-) {
// ถ้า null ข้อยกเว้น nullpoint จะทำงานที่นี่
// ดังนั้นคุณต้องเพิ่มการตรวจสอบว่าเป็นโมฆะ
if (e.equals (array [i])) {
กลับฉัน;
-
-
กลับ -1;
-
-
* สกัดตารางเชิงเส้น
* @param FromIndex เริ่มทำดัชนี
* @param toindex end index
* @return สกัดตารางเชิงเส้น
-
@suppresswarnings ("ไม่ได้ตรวจสอบ")
linelist สาธารณะ <E> sublist (int fromindex, int toindex) {
// ตัดสินว่าดัชนีเริ่มต้นนั้นอยู่นอกขอบเขต
if (fromIndex <0 || fromIndex> = size) {
โยน indexoutofboundsexception ใหม่ ("เริ่มดัชนีข้ามพรมแดน:"+fromindex);
-
// ตัดสินว่าดัชนีสิ้นสุดนั้นอยู่นอกขอบเขตหรือไม่
if (toindex> = size || fromindex <0) {
โยน indexoutofboundsexception ใหม่ ("end index outbound:"+toindex);
-
// ตัดสินว่าดัชนีเริ่มต้นและดัชนีสิ้นสุดนั้นถูกต้อง
ถ้า (FromIndex> ToIndex) {
โยน unlegalargumentException ใหม่ ("พารามิเตอร์ไม่ถูกต้องดัชนีเริ่มต้นควรมากกว่าหรือเท่ากับดัชนีปลายทาง");
-
linelist <e> list = new linelist <E> ();
สำหรับ (int i = fromIndex, j = toIndex; i <= j; i ++) {
list.add ((e) อาร์เรย์ [i]);
-
รายการคืน;
-
-