Java 在集合上运行两个循环

Java 在集合上运行两个循环,java,list,set,Java,List,Set,我有包含客户对象的TreeSet。它包含10个圆形对象。我想在集合上运行两个循环,以便将每个元素与下面的所有元素进行比较。下面是我可以用List做的示例,但我不知道如何用Set for (int i = 0; i < set.size(); i++) { // Circle circle = set.get(i); for (int j = i+1; i < set.size(); j++) { // Circle circle = set.get(j);

我有包含客户对象的
TreeSet
。它包含10个圆形对象。我想在集合上运行两个循环,以便将每个元素与下面的所有元素进行比较。下面是我可以用
List
做的示例,但我不知道如何用
Set

for (int i = 0; i < set.size(); i++) {
 // Circle circle = set.get(i);

    for (int j = i+1; i < set.size(); j++) {
        // Circle circle = set.get(j);

    }

}
for(int i=0;i
我可以使用
List List=new ArrayList(set)
实现排序(通过set)和在列表上运行两个循环,但这将是额外的内存

我想要实现的目标:-

对于外循环中的每个圆(按半径降序排序),我想计算内循环中每个圆的面积,如果该圆有效(请假设circle对象中有一个属性,它告诉我它是否有效)。 如果有效,我需要计算外循环和内循环中圆面积的乘积,并找到最大结果

使用foreach:

for (Customer customer : set ) {    
    for (Customer otherCustomer : set ) {

       // do your processing
    }   
}
无法使用特定于
列表
界面的
get(int index)
方法从
集合
中检索元素


对不起,我没有注意到您的内部循环状况:

 for (int j = i+1; i < set.size(); j++) {
因此,您可以在外部循环的当前元素之后启动第二个循环:

TreeSet<Customer> set = new TreeSet();
for (Customer customer : set) {
    for (Customer otherCustomer : set.tailSet(customer, false) {
    // do your processing
       System.out.println("");
    }
}
TreeSet set=newtreeset();
用于(客户:套){
for(客户,其他客户:set.tailSet(客户,false){
//做你的处理
System.out.println(“”);
}
}
使用foreach:

for (Customer customer : set ) {    
    for (Customer otherCustomer : set ) {

       // do your processing
    }   
}
无法使用特定于
列表
界面的
get(int index)
方法从
集合
中检索元素


对不起,我没有注意到您的内部循环状况:

 for (int j = i+1; i < set.size(); j++) {
因此,您可以在外部循环的当前元素之后启动第二个循环:

TreeSet<Customer> set = new TreeSet();
for (Customer customer : set) {
    for (Customer otherCustomer : set.tailSet(customer, false) {
    // do your processing
       System.out.println("");
    }
}
TreeSet set=newtreeset();
用于(客户:套){
for(客户,其他客户:set.tailSet(客户,false){
//做你的处理
System.out.println(“”);
}
}

您可以为相同的应用程序实现Comparator接口。默认情况下,它会根据您的要求进行排序

请查找以下相同的代码

import java.util.Comparator;
import java.util.TreeSet;

public class Main {

    public static void main(String a[]){
        //I am sorting list by name.
        TreeSet<Empl> empls = new TreeSet<Empl>(new EmplNameComp());
        empls.add(new Empl("Jitendra",3000));
        empls.add(new Empl("Kumar",6000));
        empls.add(new Empl("Balla",2000));
        empls.add(new Empl("Puja",2400));
        for(Empl e:empls){
            System.out.println(e);
        }
        System.out.println("=====END======");
    }
}

class EmplNameComp implements Comparator<Empl>{

    @Override
    public int compare(Empl e1, Empl e2) {
        return e1.getName().compareTo(e2.getName());
    }
}   

class Empl{

    private String name;
    private int salary;

    public Empl(String n, int s){
        this.name = n;
        this.salary = s;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getSalary() {
        return salary;
    }
    public void setSalary(int salary) {
        this.salary = salary;
    }
    public String toString(){
        return "Name: "+this.name+" AND Salary: "+this.salary;
    }
}
import java.util.Comparator;
导入java.util.TreeSet;
公共班机{
公共静态void main(字符串a[]{
//我正在按姓名对名单进行排序。
TreeSet emps=新树集(new EmplNameComp());
增加(新雇员(“吉坦德拉”,3000));
雇员增加(新雇员(“Kumar”,6000));
雇员补充(新雇员(“巴拉”,2000年));
增加(新雇员(“Puja”,2400));
适用于(雇员:雇员){
系统输出打印ln(e);
}
System.out.println(“=======结束=====”);
}
}
类EmplNameComp实现了Comparator{
@凌驾
公共整数比较(雇员e1、雇员e2){
返回e1.getName().compareTo(e2.getName());
}
}   
阶级雇员{
私有字符串名称;
私人薪酬;
公共雇员(字符串n,整数s){
this.name=n;
这个。薪水=s;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
public int getSalary(){
返回工资;
}
公共无效设置薪资(内部薪资){
这个。薪水=薪水;
}
公共字符串toString(){
返回“Name:+this.Name+”和Salary:+this.Salary;
}
}

您可以为相同的应用程序实现Comparator接口。默认情况下,它会根据您的要求进行排序

请查找以下相同的代码

import java.util.Comparator;
import java.util.TreeSet;

public class Main {

    public static void main(String a[]){
        //I am sorting list by name.
        TreeSet<Empl> empls = new TreeSet<Empl>(new EmplNameComp());
        empls.add(new Empl("Jitendra",3000));
        empls.add(new Empl("Kumar",6000));
        empls.add(new Empl("Balla",2000));
        empls.add(new Empl("Puja",2400));
        for(Empl e:empls){
            System.out.println(e);
        }
        System.out.println("=====END======");
    }
}

class EmplNameComp implements Comparator<Empl>{

    @Override
    public int compare(Empl e1, Empl e2) {
        return e1.getName().compareTo(e2.getName());
    }
}   

class Empl{

    private String name;
    private int salary;

    public Empl(String n, int s){
        this.name = n;
        this.salary = s;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getSalary() {
        return salary;
    }
    public void setSalary(int salary) {
        this.salary = salary;
    }
    public String toString(){
        return "Name: "+this.name+" AND Salary: "+this.salary;
    }
}
import java.util.Comparator;
导入java.util.TreeSet;
公共班机{
公共静态void main(字符串a[]{
//我正在按姓名对名单进行排序。
TreeSet emps=新树集(new EmplNameComp());
增加(新雇员(“吉坦德拉”,3000));
雇员增加(新雇员(“Kumar”,6000));
雇员补充(新雇员(“巴拉”,2000年));
增加(新雇员(“Puja”,2400));
适用于(雇员:雇员){
系统输出打印ln(e);
}
System.out.println(“=======结束=====”);
}
}
类EmplNameComp实现了Comparator{
@凌驾
公共整数比较(雇员e1、雇员e2){
返回e1.getName().compareTo(e2.getName());
}
}   
阶级雇员{
私有字符串名称;
私人薪酬;
公共雇员(字符串n,整数s){
this.name=n;
这个。薪水=s;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
public int getSalary(){
返回工资;
}
公共无效设置薪资(内部薪资){
这个。薪水=薪水;
}
公共字符串toString(){
返回“Name:+this.Name+”和Salary:+this.Salary;
}
}
您可以使用获取从当前项目开始的所有项目:

for (Customer outer : treeSet ) {    
    for (Customer inner : treeSet.tailSet(outer, false)) {
        // ...
    }   
}
注意第二个需要传递的参数
false
。它告诉集合排除
外部元素。

您可以使用它来获取从当前元素开始的所有项目:

for (Customer outer : treeSet ) {    
    for (Customer inner : treeSet.tailSet(outer, false)) {
        // ...
    }   
}

请注意第二个参数,您需要将其传递到
false
。它告诉集合排除
外部的
元素。

这听起来可能有点过于复杂。对于
,您想在内部
的主体中做什么?有什么意义?给定树集的工作方式,您知道第一个客户mer将<到所有后续的元素。树集是一个分类集。你想实现什么?@Mureinik i wan对内部循环中的所有元素进行一些计算(即,对于外部循环中的每个元素,i wan对内部循环中的所有元素进行一些处理)@JBNizet请查看我的更新以了解我想要的内容achieve@JBNizet哎呀,我没听到他说他有一个
TreeSet
在运行!马上,听起来你可能把事情复杂化了