如何将循环链表length/isEmpty作为get方法返回值并解决IntelliJ返回值未使用问题?
Hey there! Let's break down how to resolve that IntelliJ warning and make sure your length() and isEmpty() methods work as expected.
First: Why the "Return Value Unused" Warning?
Looking at your code, you are using the return values in main() with:
System.out.println(insertEnd.isEmpty()); System.out.println(insertEnd.length());
If IntelliJ is still flagging this, it's almost certainly a caching glitch. Here's how to fix it:
- Go to
File > Invalidate Caches... - Select
Invalidate and Restartfrom the popup - Once IntelliJ reboots, the warning should disappear (this clears stale analysis data that might be causing false positives)
If you had previously changed these methods to void and switched back, IntelliJ's static analyzer might not have caught up yet—this cache reset will fix that.
Second: Validate Your Methods (Fixing Logic Bugs)
While you're at it, there are a couple of logic issues in your code that will make your validation prints incorrect:
1. createCircularLinkedList() doesn't update the length variable
When you manually create the linked list here, you set up 4 nodes but leave length at 0. This means isEmpty() will incorrectly return true for this list, even though it's not empty. Fix it by adding length = 4; at the end of the method:
public void createCircularLinkedList() { ListNode first = new ListNode(1); ListNode second = new ListNode(5); ListNode third = new ListNode(10); ListNode fourth = new ListNode(15); first.next = second; second.next = third; third.next = fourth; fourth.next = first; last = fourth; length = 4; // Add this line }
2. length() method has incorrect counting logic
Your current length() implementation starts with count = length and then increments it for each node before last—this will double-count nodes (or worse, give a totally wrong number if length isn't properly maintained).
You have two better options:
- Option 1 (Efficient, uses your maintained
lengthvariable): Since you already updatelengthininsertFirst()andinsertLast(), just return the variable directly:public int length() { return length; } - Option 2 (Manual count, for verification): If you want to count nodes manually (to double-check your maintained
length), use this correct counting logic:public int length() { if (last == null) { return 0; } int count = 1; // Start with the last node ListNode temp = last.next; while (temp != last) { count++; temp = temp.next; } return count; }
This starts at 1 (for the last node) and counts every other node until we loop back to last, giving the correct total.
Testing After Fixes
Once you make these changes, run your main() method again. You should see:
- For
insertEnd.isEmpty():false(since you added 4 nodes) - For
insertEnd.length():4(correct node count) - No more "return value unused" warnings in IntelliJ
内容的提问来源于stack exchange,提问作者Sammy Abdulkader

