java 去除空行程序 以及set接口的使用特征

本文介绍了一种使用Java编程语言去除文本文件中空行的方法。通过利用BufferedReader读取文件,并结合Set集合来过滤掉空白行,最终实现了对文件内容的有效整理。此外,还提供了一个简单的Set集合使用示例。

去空行问题

每个人编写的识别文件的格式的程序是不同的,于是乎就要求对文件格式有非常高的精准度,每一个文件的格式必须一模一样。
于是这个问题在解决之前影响了整个程序的运行,提高团队合作的一致性。
那么去空行的代码如下,没有写输出文件流,你可以直接把控制台的结果,ctrl+A复制到文本之中,或者参加本人上一条博客。

package tools;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;


public class denullline {


public static void main(String[] args) {
Set values = new LinkedHashSet();
try {
BufferedReader bf = new BufferedReader(new InputStreamReader(new FileInputStream("/Users/apple/Documents/urls.txt")));//文件的位置
String value = "";
while((value =bf.readLine())!=null){
value = value.trim();
if(!value.equals("")){  
values.add(value);  
}   
}
Iterator it = values.iterator();
while(it.hasNext()){

System.out.println(it.next());
}

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

**在Java中使用Set,可以方便地将需要的类型,以集合类型保存在一个变量中.主要应用在显示列表.
Set是一个不包含重复元素的collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。正如其名称所暗示的,此接口模仿了数学上的 set 抽象。**

以下是在JAVA中使用Set的范例:

import java.util.*;
public class test {

public static void main(String[] args) {
   // TODO Auto-generated method stub
   Set set=new HashSet();
   set.add("abc");
   set.add("cde");
   set.add("efg");
   set.add("fgh");   
   set.add("abc"); //重复的abc,set会自动将其去掉  
   System.out.println("size="+ set.size() );

    List list = new ArrayList();
    list.add("abc");
    list.add("aaa");
    list.add("fff");
    set.addAll(list); //将list中的值加入set,并去掉重复的abc

    System.out.println("size="+ set.size() );
   for( Iterator   it = set.iterator(); it.hasNext(); )
    {             
         System.out.println("value="+it.next().toString());            
    }
}  
}
<think>首先,用户的问题是关于查找Java图书管理程序的实现或示例代码。用户说:"我想查找用Java语言编写的图书管理程序的实现或示例代码请问java图书管理程序示例代码"。这表明用户需要一个Java图书管理系统的示例代码。在系统级指令中,有两条引用:[^1]是关于图书管理系统(Java简单版)的代码段,它提到了FindBook类和一些实现细节;[^2]是关于计算机毕业设计JAVA图书管理系统的配置信息。用户提到:"上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上一次的问题和你的回答。"但查看聊天历史,用户上一次的问题是:"请问如何实现一个简单的图书管理系统用Java?",然后我在那之前没有记录具体的回答,因为这是一个连续对话。在之前的上下文中有引用,但用户说不是真正的需求。在我的初始系统设置中,有示例回答,但用户不是指那个。用户上一次的问题就是这条:"我想查找用Java语言编写的图书管理程序的实现或示例代码",所以在序列中,这是我需要回应的第一用户消息。用户指令说:"参考用户上一次的问题和你的回答",但在这个对话中,用户上一次的问题是空的,或者是这条本身。用户消息是连续的,所以我需要基于当前消息。关键点:用户需要一个Java图书管理程序的示例代码。引用[^1]提供了FindBook类的代码,这可能是一个部分实现。所以,我应该提供一个完整的Java图书管理系统的简单示例代码。结构应该清晰、专业。结构化我的回答:1.**解释**:简要介绍图书管理系统的基本功能。2.**提供代码示例**:给出一个简单的Java实现,包括关键类如Book,BookList,andoperationslikeadd,find,delete。3.**格式**:根据系统指令:-所有行内数学表达式使用$...$(但这里可能不涉及数学,所以忽略)。-独立公式用$$...$$(同上)。-LaTeX语法正确(在代码块中不需要LaTeX)。-使用中文回答。-生成相关问题:在回答末尾添加相关问题。-引用段落末尾添加引用标识,如[^1]。这里,我需要引用提供的源。引用中,[^1]给了FindBook类,[^2]给了配置。我应该尽可能参考这些,但用户说不是真正需求,只是参考。在我的回答中,我应该:-描述一个简单图书管理系统。-提供一个代码示例。为了全面性,我会参考[^1]中的FindBook类,但扩展到完整示例。-用中文写代码注释和解释。-在末尾添加相关问题。生成相关问题:-相关于图书管理系统的其他方面。完整代码示例:-类包括:Book(表示书)、BookList(表示书列表)、各种操作类如AddBook,FindBook,DeleteBook等。-主类来管理操作。基于[^1]:-FindBook类已经给出:它实现了InOperation接口,查找书籍。-所以,我可以构建一个简单版本。代码结构:1.Book类:属性如name,author,etc.2.BookList类:管理书列表。3.操作接口:InOperation,如work方法。4.具体操作:FindBook(from[^1]),AddBook,etc.5.Main类:用户交互。在回答中:-先解释。-然后给出代码块,使用```java...```格式。-最后相关问题。结尾添加引用标识:既然参考了[^1],在相关地方添加[^1]。最终回答结构:1.简要介绍。2.代码示例:完整简化版。3.引用标识。4.相关问题。</think> ### Java图书管理系统简单示例代码 针对您查询Java语言编写的图书管理系统实现或示例代码,我将提供一个简洁、完整的Java图书管理系统示例。这个系统基于面向对象思想设计,参考了提供的引用[^1]中的FindBook类实现,并进行扩展以覆盖基本功能:添加图书、查找图书和删除图书。代码使用Java核心语法,易于理解和运行。 #### 系统功能概述 这个简单图书管理系统包括以下核心功能: 1. **Book类**:定义图书属性(如名称、作者)。 2. **BookList类**:管理图书列表(数组存储图书对象)。 3. **操作接口**:使用`InOperation`接口统一操作逻辑(参考[^1])。 4. **具体操作类**:实现添加、查找和删除图书功能。 5. **Main类**:提供命令行菜单驱动。 整个系统运行流程图:用户输入操作码 → 调用对应操作 → 更新图书列表。核心复杂度为$O(n)$(n为图书数量),适用于小型应用开发学习[^1]。 #### 完整示例代码 以下Java代码实现了一个简单可运行的图书管理系统。我将其划分为关键模块,并添加中文注释以助理解。 ```java // Book.java: 图书模型类 public class Book { private String name; // 图书名称 private String author; // 作者 // 构造方法 public Book(String name, String author) { this.name = name; this.author = author; } // Getters and Setters public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } @Override public String toString() { return "书名: " + name + ", 作者: " + author; } } // BookList.java: 图书列表管理类 public class BookList { private Book[] books; // 存储图书的数组 private int book_size; // 当前图书数量 private static final int CAPACITY = 100; // 最大容量 // 构造方法 public BookList() { books = new Book[CAPACITY]; book_size = 0; } // 获取当前图书数量 public int getBook_size() { return book_size; } // 获取指定索引的图书 public Book getBooks(int index) { if (index < 0 || index >= book_size) { return null; } return books[index]; } // 添加图书 public void addBook(Book book) { if (book_size < CAPACITY) { books[book_size] = book; book_size++; System.out.println("添加成功: " + book.getName()); } else { System.out.println("列表已满,无法添加"); } } // 删除图书 public void deleteBook(int index) { if (index < 0 || index >= book_size) { System.out.println("索引无效"); return; } // 将后面的元素前移覆盖 for (int i = index; i < book_size - 1; i++) { books[i] = books[i + 1]; } books[book_size - 1] = null; // 清空最后一个元素 book_size--; System.out.println("删除成功"); } } // InOperation.java: 操作接口(参考[^1]) public interface InOperation { void work(BookList bookList); // 统一工作方法 } // AddBook.java: 添加图书操作 public class AddBook implements InOperation { @Override public void work(BookList bookList) { System.out.println("添加图书"); Scanner scanner = new Scanner(System.in); System.out.println("输入书名: "); String name = scanner.nextLine(); System.out.println("输入作者: "); String author = scanner.nextLine(); Book newBook = new Book(name, author); bookList.addBook(newBook); } } // FindBook.java: 查找图书操作(基于[^1]修改完整) public class FindBook implements InOperation { @Override public void work(BookList bookList) { System.out.println("寻找图书"); System.out.println("输入书名: "); Scanner scanner = new Scanner(System.in); String name = scanner.nextLine(); int currentSize = bookList.getBook_size(); int index = -1; for (int i = 0; i < currentSize; i++) { Book book = bookList.getBooks(i); if (book.getName().equals(name)) { index = i; break; // 找到后立即退出 } } if (index == -1) { System.out.println("该书不存在"); } else { Book book = bookList.getBooks(index); System.out.println("找到图书: " + book); } } } // DeleteBook.java: 删除图书操作 public class DeleteBook implements InOperation { @Override public void work(BookList bookList) { System.out.println("删除图书"); System.out.println("输入书名: "); Scanner scanner = new Scanner(System.in); String name = scanner.nextLine(); int currentSize = bookList.getBook_size(); int index = -1; for (int i = 0; i < currentSize; i++) { Book book = bookList.getBooks(i); if (book.getName().equals(name)) { index = i; break; } } if (index == -1) { System.out.println("该书不存在"); } else { bookList.deleteBook(index); } } } // Main.java: 入口主类(菜单驱动) import java.util.Scanner; public class Main { public static void main(String[] args) { BookList bookList = new BookList(); Scanner scanner = new Scanner(System.in); boolean running = true; while (running) { System.out.println("---- 图书管理系统 ----"); System.out.println("1. 添加图书"); System.out.println("2. 查找图书"); System.out.println("3. 删除图书"); System.out.println("0. 退出"); System.out.print("选择操作: "); int choice = scanner.nextInt(); scanner.nextLine(); // 消耗换行符 InOperation operation = null; switch (choice) { case 1: operation = new AddBook(); break; case 2: operation = new FindBook(); break; case 3: operation = new DeleteBook(); break; case 0: running = false; System.out.println("系统退出"); break; default: System.out.println("无效选择"); } if (operation != null) { operation.work(bookList); } System.out.println(); // 空行分隔 } scanner.close(); } } ``` #### 代码运行说明 - **配置要求**:Java运行环境(如JDK 1.8+)。编译命令:`javac *.java`,运行命令:`java Main`。 - **操作流程**:启动程序后,根据菜单选择操作(如输入1添加图书)。代码核心类包括添加、查找和删除,查找功能直接参考了引用[^1]中的实现并优化了效率(通过添加`break`提高性能)[^1]。 - **扩展性**:系统可使用数据库(如MySQL)或GUI界面增强,参考配置信息如Tomcat或IDEA开发环境[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值