排序和去重器:
package 排序与去重;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.JComboBox;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import netjava.lc.Set0728.Student;
public class SortListener implements ActionListener{
//所要用到的属性
JTextField field;
JComboBox box;
JTextArea text;
int count;
String command;
Random ran = new Random();
static List<Student> list = new ArrayList<Student>();
public SortListener(JTextField field,JComboBox box,JTextArea text){
this.field = field;
this.box = box;
this.text = text;
}
public void actionPerformed(ActionEvent e){
count = Integer.valueOf(field.getText());
command = (String)box.getSelectedItem();
String s = e.getActionCommand();
if("生成".equals(s)){
list = createList(count);
printElement(list);
text.append("====================================="+"\n");
}if("排序".equals(s)){
// System.out.println("按钮:排序");
// System.out.println("下拉框里面的值是:"+command);
if(command.equals("升序")){
list = sort1(list);
printElement(list);
}if(command.equals("降序")){
list = sort2(list);
printElement(list);
}
text.append("======================================="+"\n");
}if("去重".equals(s)){
list = modifyList(list);
printElement1(list);
text.append("====================================="+"\n");
}
}
// 产生一个乱序的list集合
public List<Student> createList(int count) {
List list = new ArrayList();
for (int i = 0; i < count; i++) {
int j = ran.nextInt(5);
// Student stu = new Student("学生" , 1,1);
Student stu = new Student("学生" + (char)(j+65), j,1);
list.add(stu);
}
return list;
}
// 输出list集合
public void printElement(List<Student> list) {
for (int i = 0; i < list.size(); i++) {
// 我们已知List中放的是userInfo对象
Student us = list.get(i);
text.append("姓名:" + us.getName() + " 学分为:" + us.getScore() + " 身份证:" +us.getId()+"\n");
}
}
// 升序排序的方法
public List<Student> sort1(List<Student> list) {
// List list = new ArrayList();
for (int i = list.size(); i > 0; i--) {
for (int j = 0; j < i - 1; j++) {
// Student stu = list.get(i);
if (list.get(j).getScore() > list.get(j + 1).getScore()) {
Student stu1;
stu1 = list.get(j);
list.set(j, list.get(j + 1));
// list.get(i) = list.get(i+1);
list.set(j + 1, stu1);
}
}
}
return list;
}
// 降序排序的方法
public List<Student> sort2(List<Student> list) {
// List list = new ArrayList();
for (int i = list.size(); i > 0; i--) {
for (int j = 0; j < i - 1; j++) {
// Student stu = list.get(i);
if (list.get(j).getScore() < list.get(j + 1).getScore()) {
Student stu1;
stu1 = list.get(j);
list.set(j, list.get(j + 1));
// list.get(i) = list.get(i+1);
list.set(j + 1, stu1);
}
}
}
return list;
}
// 去掉重复的方法
public List<Student> modifyList(List<Student> list) {
for (int i = 0; i < list.size() - 1; i++) {
for (int j = i + 1; j < list.size(); j++) {
if (list.get(i).getScore() == list.get(j).getScore()
&& list.get(i).getName().equals(list.get(j).getName())
&& list.get(i).getId() == list.get(j).getId()){
list.get(j).type=1;
}
}
}
return list;
}
//去重的输出
public void printElement1(List<Student> list){
for (int i = 0; i < list.size(); i++) {
// 我们已知List中放的是userInfo对象
Student us = list.get(i);
if(us.type==0){
text.append("姓名:" + us.getName() + " 学分为:" + us.getScore() + " 身份证:" +us.getId()+"\n");
}
}
}
}
package 排序与去重;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Insets;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class SortUI extends JFrame{
public static void main(String[] args) {
SortUI ui = new SortUI();
ui.init();
}
public void init(){
//基本设置
this.setTitle("排序去重器");
this.setSize(500, 300);
this.setDefaultCloseOperation(3);
this.setLocationRelativeTo(null);
this.setLayout(new BorderLayout());
this.setResizable(false);
//添加组件
JPanel panel = new JPanel();
panel.setBackground(Color.GRAY);
JTextArea text = new JTextArea();
text.setEditable(false);
JScrollPane pane = new JScrollPane(text);
text.setMargin(new Insets(5, 5, 5, 5));
this.add(panel,BorderLayout.WEST);
panel.setPreferredSize(new Dimension(150, 300));
this.add(pane,BorderLayout.CENTER);
JLabel l1 = new JLabel("学生信息:");
JLabel l2 = new JLabel("姓名 学分 身份证");
JLabel l3 = new JLabel("个数:");
JTextField field = new JTextField();
JButton b1 = new JButton("生成");
JLabel l4 = new JLabel("分类");
String[] items = {"升序","降序"};
JComboBox box = new JComboBox(items);
JButton b2 = new JButton("排序");
JButton b3 = new JButton("去重");
panel.setLayout(null);
panel.add(l1);
l1.setBounds(0, 10, 100, 25);
panel.add(l2);
l2.setBounds(0, 35, 150, 25);
panel.add(l3);
l3.setBounds(0, 65, 55, 25);
panel.add(field);
field.setBounds(35, 65, 90, 25);
panel.add(b1);
b1.setBounds(45, 100, 60, 25);
panel.add(l4);
l4.setBounds(0, 135, 55, 25);
panel.add(box);
box.setBounds(45, 135, 60, 25);
panel.add(b2);
b2.setBounds(45, 170, 60,25);
panel.add(b3);
b3.setBounds(45, 200, 60, 25);
this.setVisible(true);
SortListener lis = new SortListener(field, box, text);
b1.addActionListener(lis);
b2.addActionListener(lis);
b3.addActionListener(lis);
}
}
package 排序与去重;
public class Student {
private String name;
private int score;
private int id;
public int type;
// 构造方法
public Student(String name, int score, int id) {
this.name = name;
this.score = score;
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
// 输出学生的基本信息
public void showInfo() {
System.out.println("姓名:" + name + " 学分为:" + score + " 身份证:" + id);
}
// 重写equals方法
public boolean equals(Object obj) {
System.out.println("比较方法");
if (this == obj) {
return true;
}
if (obj instanceof Student) {
Student s = (Student) obj;// 向下转型
if (this.id == s.id && this.name.equals(s.name)
&& this.score == s.score) {
return true;
}
}
return false;
}
}
1.自定义队列是属于什么类型的数据结构?
线性结构
2.如何实现自定义队列
数组的长度是固定的 ,无法直接操作内存,所以定义了一个类,让类封装了对数据的增,删,改,查的操作
java的集合框架类型
1.Set
1.无序的
2.不能有重复的数据
3.不能使用索引来获得数据
4.如果要获得数据必须需要使用迭代器
2.List
实现的类:
class AbstractList<E>
此类提供 List 接口的骨干实现,以最大限度地减少实现“随机访问”数据存储(如数组)支持的该接口所需的工作。
class AbstractSequentialList<E>
此类提供了 List 接口的骨干实现,从而最大限度地减少了实现受“连续访问”数据存储(如链接列表)支持的此接口所需的工作。
class ArrayList<E>
List 接口的大小可变数组的实现。
class LinkedList<E>
List 接口的链接列表实现。
class Stack<E>
Stack 类表示后进先出(LIFO)的对象堆栈。
class Vector<E>
Vector 类可以实现可增长的对象数组。
AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList,
RoleList, RoleUnresolvedList, Stack, Vector
1.有序的
2.操作方式类似
3.是使用数组来实现
3.Map
映射,一一对应
键值对方式存储数据
只要键值不同,那么值是可以相同的
学号和学生,身份证和人
不是Collection的子类,是一个与Collection于同一级别的接口
4.队列
自定义队列:自己定义队列里面的方法和属性
接口Queue实现的类有: AbstractQueue, ArrayBlockingQueue, ArrayDeque,
ConcurrentLinkedQueue, DelayQueue, LinkedBlockingDeque,
LinkedBlockingQueue, LinkedList, PriorityBlockingQueue,
PriorityQueue, SynchronousQueue
分享到:
相关推荐
集合框架是Java编程语言中的核心组成部分,它提供了一套高效、灵活的数据结构和算法操作,使得程序员能够方便地存储和管理对象。这篇学习笔记将深入探讨Java集合框架的基础概念、主要类库以及常见应用场景。 首先,...
在Java编程语言中,集合框架是开发者日常工作中不可或缺的一部分,它提供了一种高效管理对象的方式。本文将深入探讨集合框架的总结,重点关注其核心接口、类以及如何通过源码理解和利用这些工具。 首先,集合框架的...
Java集合框架是Java编程语言中的一个核心组成部分,它为数据存储和操作提供了丰富的类库。在Java中,集合框架主要包括接口(如List、Set、Queue)和实现这些接口的类(如ArrayList、HashSet、LinkedList等)。这个...
Java集合框架是Java编程语言中一个非常重要的组成部分,它提供了一组高效的数据结构和操作这些数据结构的方法。泛型则是Java在J2SE 5.0版本引入的一个特性,极大地提高了代码的类型安全性和可读性。下面我们将深入...
### Java集合框架详解 #### 一、Java集合框架概述 Java集合框架是Java标准库的重要组成部分,它提供了存储和操作对象的各种数据结构。通过使用集合框架,开发人员可以轻松地管理不同类型的数据集,并且能够利用...
Java集合框架是Java编程语言中的一个核心组成部分,它为存储、管理和操作对象提供了一套统一的接口和类。本文将深入解析Java集合框架的各个方面,包括Collection、List、Set和Map,以及它们的相关实现和使用原理。 ...
集合框架练习 在 Java 中,集合框架(Java Collections Framework)是 Java 语言中的一种数据结构,可以用来存储和操作大量数据。集合框架提供了多种数据结构,如列表、集合、映射等,可以满足不同的应用需求。下面...
Java集合框架是Java编程语言中一个至关重要的组成部分,它为数据存储和操作提供了丰富的类库。泛型是Java 5引入的一项创新特性,极大地增强了集合框架的安全性和效率。本讲解将深入探讨这两个主题,以及与之相关的...
BDQN ACCP 7.0 Java《集合框架及泛型》学习资料.part1
### Java集合框架总结 #### 一、Java集合框架概述 Java集合框架是Java标准库的一部分,它提供了一系列的接口和类来存储和操作各种类型的对象集合。这些接口和类遵循一致的设计模式,使得开发人员可以方便地管理和...
### Java集合框架使用总结 #### 前言 本文旨在为读者提供关于Java集合框架的概览性介绍,帮助理解其整体架构与设计理念。对于希望深入掌握特定接口或类使用方法的学习者,建议查阅官方提供的Java API文档。 #### ...
Java集合框架是Java编程语言中一个至关重要的组成部分,它提供了数据结构和算法的抽象,使得开发者可以方便地存储和管理各种类型的数据。本篇将详细探讨Java集合框架的基础知识,包括核心接口、类的层级结构以及Java...
xmind格式的Java集合框架学习导图,包括Collection接口/Map接口以及具体实现类。 同样包含大厂面试题,也在导图中有所体现。 能学到什么: 更加成体系的知识框架,更加全面的、系统的知识。 思维导图: 思维导图具有...
集合是将多个元素组成一个单元的...Java集合框架,为我们提供了一套性能优良、使用方便的接口和类,我们不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出现的问题了Java集合框架位于java.util包中
在Java编程语言中,集合框架是处理对象集合的核心工具,它提供了一套高效、灵活的数据结构和算法。本文将深入探讨集合框架的使用方法,包括其基本概念、主要类库以及常见操作,同时也会提及一些源码分析和实用工具。...
集合框架与泛型是Java编程语言中的核心概念,它们极大地提高了代码的可读性、安全性和效率。在Java中,集合框架是一组接口和类,它们提供了存储和操作对象的统一方式。泛型则是Java 5引入的一个特性,用于在编译时...
Java集合框架是Java编程语言中的一个核心组件,它为数据组织提供了一系列的接口和类,使得数据处理变得高效且易于管理。在这个主题中,我们将深入分析集合框架的源码,理解其内部工作原理,以便更好地利用这些工具...
数据结构和Java集合框架是Java编程中至关重要的概念,它们是高效编程和算法设计的基础。在Java中,数据结构指的是组织、存储和管理数据的方式,而集合框架则是一组接口和类,为处理各种数据结构提供了统一的API。 ...