Avatar billede spyrodrag Nybegynder
18. oktober 2007 - 15:52 Der er 6 kommentarer og
1 løsning

Omskrivning af kode

Hej eksperter,

Jeg har noget C# kode, som jeg skal have skrevet om til Java kode, er der nogen der har mod på den opgave:

class Program
{
    static List<KeyValuePair<string, List<string>>> someSchool = new List<KeyValuePair<string, List<string>>>();

    static void Main(string[] args)
    {
        AppendClass("3g");
        AddStudent("3g", "Foo Bar");
        OutputStudentList("3g");
        RemoveClass("3g");
    }

    public static void OutputStudentList(string className)
    {
        foreach (KeyValuePair<string, List<string>> pair in someSchool)
        {
            if (pair.Key == className)
            {
                foreach (string student in pair.Value)
                    Console.WriteLine(student);
            }
        }
    }

    public static bool ClassExists(string name)
    {
        foreach (KeyValuePair<string, List<string>> pair in someSchool)
        {
            if (pair.Key == name)
                return true;
        }
        return false;
    }

    public static void AppendClass(string name)
    {
        if (ClassExists(name)) return;
        KeyValuePair<string, List<string>> pair = new KeyValuePair<string, List<string>>(name, new List<string>());
        someSchool.Add(pair);
    }

    public static void RemoveClass(string name)
    {
        KeyValuePair<string, List<string>> removeItem = new KeyValuePair<string,List<string>>("NotFound", null);
        foreach (KeyValuePair<string, List<string>> pair in someSchool)
        {
            if (pair.Key == name)
            {
                removeItem = pair;
                break;
            }
        }

        if (removeItem.Key != "NotFound")
            someSchool.Remove(removeItem);
    }

    public static bool StudentInClass(string className, string student)
    {
        foreach (KeyValuePair<string, List<string>> pair in someSchool)
        {
            if (pair.Key == className)
            {
                foreach (string studentItem in pair.Value)
                {
                    if (studentItem == student)
                        return true;
                }
            }
        }
        return false;
    }

    public static void AddStudent(string className, string student)
    {
        if (StudentInClass(className, student)) return;
        foreach (KeyValuePair<string, List<string>> pair in someSchool)
        {
            if (pair.Key == className)
            {
                pair.Value.Add(student);
                return;
            }
        }
    }

    public static void RemoveStudent(string className, string student)
    {
        foreach (KeyValuePair<string, List<string>> pair in someSchool)
        {
            if (pair.Key == className)
            {
                pair.Value.Remove(student);
                return;
            }
        }
    }
}

På forhånd tak,
Martin.
Avatar billede arne_v Ekspert
18. oktober 2007 - 16:08 #1
En simpel 1:1 konvertering:

import java.util.*;

public class Program
{
    static ArrayList<KeyValuePair<String, ArrayList<String>>> someSchool = new ArrayList<KeyValuePair<String, ArrayList<String>>>();

    public static void main(String[] args)
    {
        AppendClass("3g");
        AddStudent("3g", "Foo Bar");
        OutputStudentArrayList("3g");
        RemoveClass("3g");
    }

    public static void OutputStudentArrayList(String className)
    {
        for (KeyValuePair<String, ArrayList<String>> pair : someSchool)
        {
            if (pair.getKey() == className)
            {
                for (String student : pair.getValue())
                    System.out.println(student);
            }
        }
    }

    public static boolean ClassExists(String name)
    {
        for (KeyValuePair<String, ArrayList<String>> pair : someSchool)
        {
            if (pair.getKey() == name)
                return true;
        }
        return false;
    }

    public static void AppendClass(String name)
    {
        if (ClassExists(name)) return;
        KeyValuePair<String, ArrayList<String>> pair = new KeyValuePair<String, ArrayList<String>>(name, new ArrayList<String>());
        someSchool.add(pair);
    }

    public static void RemoveClass(String name)
    {
        KeyValuePair<String, ArrayList<String>> removeItem = new KeyValuePair<String,ArrayList<String>>("NotFound", null);
        for (KeyValuePair<String, ArrayList<String>> pair : someSchool)
        {
            if (pair.getKey() == name)
            {
                removeItem = pair;
                break;
            }
        }

        if (removeItem.getKey() != "NotFound")
            someSchool.remove(removeItem);
    }

    public static boolean StudentInClass(String className, String student)
    {
        for (KeyValuePair<String, ArrayList<String>> pair : someSchool)
        {
            if (pair.getKey() == className)
            {
                for (String studentItem : pair.getValue())
                {
                    if (studentItem == student)
                        return true;
                }
            }
        }
        return false;
    }

    public static void AddStudent(String className, String student)
    {
        if (StudentInClass(className, student)) return;
        for (KeyValuePair<String, ArrayList<String>> pair : someSchool)
        {
            if (pair.getKey() == className)
            {
                pair.getValue().add(student);
                return;
            }
        }
    }

    public static void RemoveStudent(String className, String student)
    {
        for (KeyValuePair<String, ArrayList<String>> pair : someSchool)
        {
            if (pair.getKey() == className)
            {
                pair.getValue().remove(student);
                return;
            }
        }
    }
}

class KeyValuePair<T,U> {
    private T key;
    private U value;
    public KeyValuePair(T key, U value) {
        super();
        this.key = key;
        this.value = value;
    }
    public T getKey() {
        return key;
    }
    public void setKey(T key) {
        this.key = key;
    }
    public U getValue() {
        return value;
    }
    public void setValue(U value) {
        this.value = value;
    }
}
Avatar billede spyrodrag Nybegynder
18. oktober 2007 - 16:10 #2
Hej Arne,

Kan jeg ikke undgå den ekstra klasse?
class KeyValuePair.
Avatar billede arne_v Ekspert
18. oktober 2007 - 16:22 #3
Saa skal du finde en tilsvarende klasse et eller andet sted i Java library.

Jeg kunne ikke lige komme i tanke om en.
Avatar billede fsconsult.dk Nybegynder
19. oktober 2007 - 06:55 #4
jeg har ikke 100% nærlæst koden, men kunne det evt. løses ved at bruge  Map istedet for List ?
Avatar billede spyrodrag Nybegynder
19. oktober 2007 - 11:23 #5
Hej fsconsult,
du skal være mere end velkommen til at prøve at se om du kan gennemskue det.
Avatar billede spyrodrag Nybegynder
22. oktober 2007 - 07:57 #6
Hej Arne,

Vil du være venlig at lægge et svar? Jeg tror jeg har hvad jeg skal bruge, ellers opretter jeg en ny sag.

Venlig hilsen,
Martin.
Avatar billede arne_v Ekspert
22. oktober 2007 - 15:11 #7
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Lead Data Platform Architect

Forsvarsministeriets Regnskabsstyrelse

Datadesigner